|
|
看到有人提问这个,当时自己用Lua时也有类似问题,所以贴出来供大家参考。
头文件要这样引用
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
定义Lua
lua_State* L;
初始化Lua
int InitLua()
{
L = lua_open();
luaopen_base(L);
luaopen_table(L);
lua_cpcall(L, luaopen_io, 0);
luaopen_string(L);
luaopen_math(L);
以上是初始化 Lua
RegFunction(); //注册函数,这个函数在下面。
luaL_dofile(L, "C:\\Lua.txt"); //这个是执行Lua文件
return 1;
}
如果相让Lua能访问C++函数就先得把C++函数注册进Lua.
注册方法:
int RegFunction()
{
lua_register(L,"AddP/*这个是在Lua中调用时使用的函数名*/",Add/*这个是在程序中定义的C++函数的名称*/);
return 1;
}
比如函数Add是做加法运算并输出在屏幕上
int Add(lua_State *L) //括号里只能有这一个参数
{
long a,b,c;
a=lua_tonumber(L,1); //取第一个参数 lua_tonumber()函数是取数字
b=lua_tonumberL,2); //取第二个参数 lua_tostring()函数是取字符串
c=a+b;
print(c);
return 1;
}
在main()函数中执行InitLua()函数。
如果c:\lua.txt的内容是:
AddP(1,2);
那么就会在控制台中显示"3"
不难吧。。。 [em1] [em1] [em1] [em1] [em1] |
|