C Lua Bindings Windows VS2017 - PullRequest
       28

C Lua Bindings Windows VS2017

1 голос
/ 02 апреля 2019

Я хотел бы создать .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?

...