我想构建一个.dll,其中填充了使用VS 2017编译的用C编写的Lua绑定,但是我似乎没有任何运气,而且我可用的资源令人困惑,并且大多数情况下已过时。
这就是我所做的。
我已经从源代码编译了lua并将其添加到我的路径中,以便可以lua.exe
进行任何操作。这也创建了lua53.dll
。
我已经获取了lua源代码的所有.c和.h文件,并将它们以及一个我要测试的main.c
一起添加到了我的VS项目中。我也添加了.dll文件,但仅以与添加.c和.h文件相同的方式进行。我认为它什么也没做。
这是main.c:
#define LUA_LIB
#include "lua/lua.h"
#include "lua/lualib.h"
#include "lua/lauxlib.h"
#include "tg/tg.h"
static int lua_TG(lua_State *L) {
return 1;
}
static int lua_useTGHandle(lua_State *L) {
struct TGHandle *tgHandle = malloc(sizeof(struct TGHandle));
*tgHandle = TG();
lua_pushlightuserdata(L, tgHandle);
return 1;
}
static const luaL_Reg tglib[] = {
{"TG", lua_TG},
{"useTGHandle", lua_useTGHandle},
{NULL, NULL}
};
LUALIB_API int luaopen_libtg(lua_State* L) {
luaL_newlib(L, tglib);
return 1;
}
实现了一个功能,没有实现,但是lib应该注册了。
我将构建类型更改为.dll,并且生成的.dll没有任何错误,但是当我尝试在Lua脚本中使用它时,我得到了:
%1 is not a valid Win32 application.
我当然不知道自己在做什么。我将如何在VS2017中建立一个lua绑定构建环境?