Я хотел бы создать .dll, заполненную привязками Lua, написанными на C, скомпилированными с использованием VS 2017, но мне, похоже, не повезло, а доступные мне ресурсы сбивают с толку и, по большинству, устарели.
Вот что я сделал.
Я уже скомпилировал lua из исходного кода и добавил его в свой путь, чтобы я мог lua.exe
что угодно. Это также создало lua53.dll
.
Я взял все файлы .c и .h исходного кода lua и добавил их в свой проект VS вместе с одним main.c
, который я использую для тестирования. Я также добавил файл .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;
}
Одна функция реализована, другая - нет, но библиотека должна зарегистрироваться.
Я изменил тип сборки на .dll, и я сгенерировал .dll без каких-либо ошибок, но когда я пытаюсь использовать его в сценарии Lua, я получаю:
%1 is not a valid Win32 application.
Конечно, я просто понятия не имею, что я делаю. Как бы я просто настроил среду lua-binding-building в VS2017?