#include <iostream>
#include <windows.h>
//=== Необходимые для Lua константы ============================================================================//
#define LUA_LIB
#define LUA_BUILD_AS_DLL
//=== Стандартная точка входа для DLL ==========================================================================//
BOOL APIENTRY DllMain(HANDLE hModule, DWORD fdwReason, LPVOID lpReserved)
{
//Вроде бы это не обязательно
return TRUE;
}
//=== Заголовочные файлы LUA ===================================================================================//
extern "C"
{
#include "C:\\Users\\Serg\\source\\repos\\Quil_Lua_connector\\Lua_staticlib_files_x64_5.4\\lauxlib.h"
#include "C:\\Users\\Serg\\source\\repos\\Quil_Lua_connector\\Lua_staticlib_files_x64_5.4\\lua.h"
}
#pragma comment(lib, "C:\\Users\\Serg\\source\\repos\\Quil_Lua_connector\\Lua_staticlib_files_x64_5.4\\lua54.lib")
//=== Заголовочные файлы LUA ===================================================================================//
//=== Реализация функций, вызываемых из LUA ====================================================================//
static int forLua_TestFunc(lua_State* L) {
lua_pushstring(L, "Привет из C/C++");
return(1);
}
//=== Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua ================================//
static struct luaL_Reg ls_lib[] = {
{"TestFunc", forLua_TestFunc},
{NULL, NULL}
};
//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
extern "C" LUALIB_API int luaopen_lua_dll_x64_name(lua_State * L)
{
luaL_newlib(L, ls_lib);
lua_setglobal(L, "lua_dll_x64_name");
return 1;
}
3)Компилирую этот код release/x64 и Visual Studio Создает - lua_dll_x64_name.dll 4)Помещаю созданный .dll в папку с info.exe. 5)Запускаю Quik и запускаю следующий скрипт:
Код
path = getScriptPath() .. "\\lua_dll_x64_name.dll"package.loadlib(path, "luaopen_lua_dll_x64_name")()
function main()
message(lua_dll_x64_name.TestFunc())
end
6)И квик сразу же выдает ошибку:
Код
...Lua_script.lua.txt:2: attempt to call a nil value
гадать не видя весь код бессмысленно. Сообщение говорит, что функции нет. еще раз скажу, отлаживайте свою функцию без квик. Научитесь сначала писать dll для луа. Полагаю Вы знаете как отладить софт.
гадать не видя весь код бессмысленно. Сообщение говорит, что функции нет. еще раз скажу, отлаживайте свою функцию без квик. Научитесь сначала писать dll для луа. Полагаю Вы знаете как отладить софт.
nikolz написал: надо собирать 5.3 и пример я Вам дал для 5.3 и ссылку на документацию на 5.3
Собсвенно для 5.3.5 - я тоже собирал - ошибка точно такая же.
Я вам все написал как делать. Вы собираетесь делать или рассуждать? если у вас 8.7 то все должно быть 5.3 ------------------- анекдот: Мадам, там кирпич и обрыв,туда нельзя. Но Вам можно.