Добрый день, не знаю как отладить ошибку при работе DLL. При вызове функции Lua_pcal, компилятор выдаёт следующие:
Скрытый текст |
---|
Вызвано исключение по адресу 0x779FEB83 (ntdll.dll) в info.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00000014. |
Dll (на с++)
Скрытый текст |
---|
Код |
---|
static void test(lua_State *L)
{
for (size_t i = 0; i < 10000; i++)
{
lua_getglobal(L, "message");
lua_pushstring(L, "test");
lua_pcall(L, 1, 0, 0);
}
}
static int forLua_StartProgramm(lua_State *L)
{
std::thread thr(test, L); //Запускает выполнение функции в отдельном потоке
thr.detach();
return (0);
}
static struct luaL_reg ls_lib[] = {
{ "StartProgramm", forLua_StartProgramm },
{ NULL, NULL }
};
extern "C" LUALIB_API int luaopen_QluaCSharpConnector(lua_State *L) {
luaL_openlib(L, "QluaCSharpConnector", ls_lib, 0);
return 0;
} |
|
Lua
Скрытый текст |
---|
Код |
---|
require("QluaCSharpConnector");
Run = true;
function main()
QluaCSharpConnector.StartProgramm();
while Run do
sleep(1);
end;
end;
function OnStop()
Run = false;
end; |
|
Ошибка возникает в случайный момент, может вообще не появится.