1 (2022-10-06 18:43:43 отредактировано Serg_)

Тема: Квик не распознает dll

Подскажите, кто нибудь сталкивался с такой проблемой ?

Простейший пример:

Скрипт Lua:

function main()

Quik_Lua_connector = require("Quik_Lua_connector")

Quik_Lua_connector.run_CPP() 


-------------------------
while not stopped do 
sleep(1)
end 
-------------------------


end

С++:

#include "my_func.h"

extern "C"
{
#include "lauxlib.h"
#include "lua.h"
}
#pragma comment(lib,"C:\\Users\\lua54.lib")


int forLua_run_CPP(lua_State* L)
{

int status - my_func(L);

return 0;
}

my_func.h: отдельным файлом:

#pragma once

extern "C"
{
#include "lauxlib.h"
#include "lua.h"
}


int my_func(lua_State* L)
{
int my_int =5;

return my_int ;
}

Соответственно - все компилируется, запускаю скрипт в Квике и наступает счастье, квик сообщает об ошибке:

error loading module 'Quik_Lua_connector' from file 'C:\SBERBANK\QUIK_x64_KA\Quik_Lua_connector.dll':
Не найдена указанная процедура.

И вся проблема из за того, что я подключим хедеры Lua в отдельном my_func.h.
Если я убираю include из my_func.h.  и соответвенно убирают "lua_State* L" из параметров функции, то все работает.

2 (2022-10-06 20:25:24 отредактировано swerg)

Re: Квик не распознает dll

Сначала общие слова:
Тело функции в .h файл не надо помещать.
Если уж вы в .h-файле сделали #include для Lua-заголовочников, то в .cpp файле эти include уже не нужны.
Делать require лучше в начале скрипта, в main не понятно зачем. Хотя к проблема вроде не должно приводить.

По конкретике:
Сообразить что именно приводит к указанному эффекту по приведенному коду не могу. Однако это ж и не полный текст, очевидно.

У меня все же впечатление, что вы еще что-то делаете помимо описанного

3

Re: Квик не распознает dll

swerg пишет:

По конкретике:
Сообразить что именно приводит к указанному эффекту по приведенному коду не могу. Однако это ж и не полный текст, очевидно.

У меня все же впечатление, что вы еще что-то делаете помимо описанного

Абсолютно ничего, я специально код сократил именно до такого, как я его указал, чтобы понять, где ошибка.
Однако ошибка именно в подключаемых хедерах Lua в my_func.h или в my_func.cpp - если он используется.

4

Re: Квик не распознает dll

Невнимательность.

Забыл включить:

#define LUA_LIB
#define LUA_BUILD_AS_DLL