Блог им. SAMOKILLER
//=== Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua ================================// static struct luaL_reg ls_lib[] = { { "TestFunc", forLua_TestFunc }, // из скрипта Lua эту функцию можно будет вызывать так: QluaCSharpConnector.TestFunc(); здесь можно указать любое другое название { NULL, NULL } }; //=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================// //extern "C" LUALIB_API int luaopen_connector(lua_State *L) { // luaL_openlibs(L, "connector", ls_lib, 0); // return 0; //} extern "C" LUALIB_API int luaopen_connector(lua_State *L) { lua_newtable(L); luaL_setfuncs(L, ls_lib, 0); lua_pushvalue(L, -1); lua_setglobal(L, "connector"); return 0; }
static struct luaL_Reg ls_lib[] = { {NULL, NULL}};
extern «C» LUALIB_API int luaopen_connector(lua_State *L)
{
lua_newtable(L);
luaL_setfuncs(L, ls_lib, 0);
lua_setglobal(L, «connector»);
lua_pushcclosure(L, forLua_TestFunc, 0); //Добавляет функцию в стек
lua_setglobal(L, «TestFunc»); //Регистрирует её в QLua
return 0;
}
Ну и не забудьте волшебные слова:
#define LUA_LIB
#define LUA_BUILD_AS_DLL
// заголовочные файлы LUA из дистрибутива LUA
extern «C» {
#include "../Lua53/include/lauxlib.h"
#include "../Lua53/include/lua.h"
}
там изменена большая буква на маленькую или наоборот. luaL_Reg по-моему. Обратите внимание.
По остальным ошибкам не знаю, давно делал уже. Если хотите, можете посмотреть на примере моих библиотек.
Вот готовая болванка проекта dll-библиотеки Lua для QUIK любой версии
github.com/swerg/simple-lua-c-dll
Пользуйтесь на здоровье!