欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Lua 调用 C++ 函数

程序员文章站 2022-06-04 15:37:14
...

准备

首先你要有 Lua 环境,可以安装比较方便的 lua 5.1
???? ???? ????
也可以去 lua 官网下载源码自己编译
手动搭建 lua 5.3 教程参考这里

开始

创建一个空的 Dll 项目,随便起名。在项目属性 - C++ - 附加包含目录 中添加 lua 中的
include 文件夹:
Lua 调用 C++ 函数
然后在 属性- 连接器 - 常规 - 附加库目录 添加 lua 的 lib 文件夹:
Lua 调用 C++ 函数
再在 属性 - 链接器 - 输入 - 附加依赖项 中加入 lua5.1.lib:
Lua 调用 C++ 函数
将如下代码粘贴到 main.cpp 内:


extern "C" {
#include "lua.h"  
#include "lualib.h"  
#include "lauxlib.h"
};
#include <iostream>  
using namespace std;

// 给 Lua 调用的函数
int ShowMsg(lua_State* luaEnv) { 
    cout << "Hello aaa" << endl;
    return 0;  
}

// { 函数名,函数指针 },必须以 { NULL, NULL } 结尾
luaL_Reg luaLibs[] = {
    { "ShowMsg", ShowMsg},
    { NULL, NULL }
};

// dll 导出函数
extern "C" __declspec(dllexport)
void luaopen_aaa(lua_State* luaEnv) {
    char* LIBRARY_NAME = "aaa";	
    luaL_register(
		luaEnv,			// 主线程栈结构
		LIBRARY_NAME,	// 表名,也是 dll 文件名
		luaLibs			// 表实例
		); 
}

编译,找到你的 dll,把名字改成 aaa.dll,放到这个路径内:
Lua 调用 C++ 函数
打开 lua 编辑器。写如下代码:

require "aaa"
aaa.ShowMsg()

点击运行,成功!
Lua 调用 C++ 函数

注意,以下几处必须全部相同,否则运行失败!

Lua 调用 C++ 函数Lua 调用 C++ 函数

相关标签: Lua