哪位移植过lua_tinker支持lua5.2的?

guolisen 2012-10-14 11:14:30
哪位移植过lua_tinker支持lua5.2的?

我将原来的LUA_GLOBALSINDEX 改为LUA_REGISTRYINDEX ,并将main函数中原来的lua_open改为:
lua_State* L = luaL_newstate(); //lua_open();

运行第一个例子。可是返回如下错误:

sample1.lua:2: attempt to call global 'cpp_func' (a nil value)
<call stack>
-> cpp_func() : line -1 [=[C] : line -1]
unknown : line 2 [@sample1.lua : line 0]
lua_tinker::call() attempt to call global `lua_func' (not a function)
lua_func(3,4) = 0

请各位移植过的朋友帮忙看看。要是有改好的帮忙发一个,谢了guolisen#163.com



// sample1.cpp : C++ 客 Lua 惑龋埃狼 窃荐 角青阑 舅酒夯促.
//

#include <iostream>
#include <tchar.h>

// TODO: reference additional headers your program requires here

extern "C"
{
#include "../lua/lua.h"
#include "../lua/lualib.h"
#include "../lua/lauxlib.h"
};
#include "../lua_tinker/lua_tinker.h"

int cpp_func(int arg1, int arg2, char* arg3)
{
printf("%s\n", arg3);
return arg1 + arg2;
}

//template<typename F>
void regFun(lua_State* L, void* func)
{
lua_tinker::def(L, "cpp_func", cpp_func);
}

int _tmain(int argc, _TCHAR* argv[])
{
// Lua 甫 檬扁拳 茄促.
lua_State* L = luaL_newstate(); //lua_open();

// Lua 扁夯 窃荐甸阑 肺靛茄促.- print() 荤侩
luaopen_base(L);

// LuaTinker 甫 捞侩秦辑 窃荐甫 殿废茄促.
lua_tinker::def(L, "cpp_func", cpp_func);
//regFun(L, cpp_func);

// sample1.lua 颇老阑 肺靛/角青茄促.
lua_tinker::dofile(L, "sample1.lua");

// sample1.lua 狼 窃荐甫 龋免茄促.
int result = lua_tinker::call<int>(L, "lua_func", 3, 4, "Hello");

// lua_func(3,4) 狼 搬苞拱 免仿
printf("lua_func(3,4) = %d\n", result);

// 橇肺弊伐 辆丰
lua_close(L);

return 0;
}


-- C++ 俊辑 殿废茄 窃荐甫 龋免茄促.
result = cpp_func(1, 2, "Hello!")

print("cpp_func(1,2) = "..result)


-- 老馆利牢 lua 窃荐甫 急攫茄促.
function lua_func(arg1, arg2, arg3)
print(arg3)
return arg1 + arg2
end
...全文
75 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧