Подключение сторонних библиотек в Lua скрипте

Страницы: 1
RSS
Подключение сторонних библиотек в Lua скрипте
 
Доброго времени суток.

Наткнулся на тему https://forum.quik.ru/forum10/topic561/ в которой разбирается вопрос о том как отправлять электронные письма из скрипта.
Я скачал библиотеку http://files.luaforge.net/releases/luasocket/luasocket/luasocket-2.0/luasocket-2.0-win32.zip

Внутри архива две папки: lib (с парой dll) и lua (со скриптами на lua соответственно). Я скопировал эти две папки в папку с квиком и переименовал lib -> Include.

В скрипте пытаюсь использовать библиотеку следующим образом:
Код
local smtp = require("socket.smtp")
При запуске скрипта получаю ошибку
Код
error loading module 'socket.core' from file 'C:\Program Files\QUIK-Junior\Include\socket\core.dll':
   Не найден указанный модуль.
Кто-нибудь может подсказать как правильно подключить библиотеку?  
 
Добрый день.
Нужно соблюсти структуру каталогов, как указано в документации на библиотеку, см. раздел Directory structure:
<LDIR>/compat-5.1.lua
<LDIR>/ltn12.lua
<LDIR>/socket.lua
<CDIR>/socket/core.dll
<LDIR>/socket/http.lua
<LDIR>/socket/tp.lua
<LDIR>/socket/ftp.lua
<LDIR>/socket/smtp.lua
<LDIR>/socket/url.lua
<LDIR>/mime.lua
<CDIR>/mime/core.dll

И соответственно перед использованием require("socket.smtp") добавить эти каталоги в переменные среды, например, так:
Код
package.cpath = getScriptPath() .. "\\<CDIR>\\?.dll;" .. package.cpath
package.path = getScriptPath() .. "\\<LDIR>\\?.lua;" .. package.path
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
 
Цитата
Quik Developer написал:
Я скопировал эти две папки в папку с квиком и переименовал lib -> Include.
Вот тут бы поподробнее
 
Добрый день.
Делал все по инструкции из темы https://forum.quik.ru/forum10/topic561/

Сам скрипт:
Код
package.cpath = getScriptPath() .. "\\lib\\?.dll;" .. package.cpath
package.path = getScriptPath() .. "\\lua\\?.lua;" .. package.path
local smtp = require("socket.smtp")

В итоге появляется ошибка:
Код
error loading module 'socket.core' from file 'C:\Robots\SS\lib\socket\core.dll':
   Не найден указанный модуль.

Подскажите где мог допустить ошибку?
 
Цитата
Евгений написал:
Добрый день.
Делал все по инструкции из темы  https://forum.quik.ru/forum10/topic561/

Сам скрипт:
Код
  package.cpath  =   getScriptPath ()  ..   "\\lib\\?.dll;"   ..  package.cpath
package.path  =   getScriptPath ()  ..   "\\lua\\?.lua;"   ..  package.path
 local  smtp  =   require ( "socket.smtp" )
  

В итоге появляется ошибка:
Код
  error loading module  'socket.core'  from file  'C:\Robots\SS\lib\socket\core.dll' :
   Не найден указанный модуль.
  

Подскажите где мог допустить ошибку?
Скорее всего у Вас нет библиотеки , которая нужна этой библиотеке.
Для решения проблемы надо посмотреть зависимости этой библиотеки.
 
Для поиска зависимостей dll помогает программа Dependency Walker, в которой нужно открыть проблемную dll.
Страницы: 1
Читают тему
Наверх