Довольно часто требуется скомпоновать код программы так, что он сильно походит на выполнение некоего сценария. Например:

Код:
...
Procedure MyOutput(String.s)  ; Вывод строки в файл
  WriteStringN(#MyFile, "<p>"+String+"</p>")
EndProcedure
...
; Начало сценария
MyOutput("Первая строка")
MyOutput("Вторая")
MyOutput("И следующая")
...
; Конец сценария

При этом тело сценария часто менять приходится, не компилировать же каждый раз заново.. В общем, скриптовой Lua значительно упростил бы жизнь.
Вопрос связан с его подключением. Есть информация как это сделать?
Я пробовал подключить dll-ку, что на оф.сайте скачать можно. Не клеится что-то. Вот код:

Код:
; Попытка подключить в работу интерпритатор Lua
; Компилятор PB 5.11(х64)

#LuaLibrary=0

OpenLibrary(#LuaLibrary, "Lua52.dll")

If IsLibrary(#LuaLibrary) : Debug "Ура! Библиотека подгружена!"
Else 
  Debug "Ну облом( Библиотека не была подгружена!" 
  End
EndIf

luaVM.i=CallCFunction(#LuaLibrary, "luaL_newstate", 0)
If luaVM : Debug "Создана виртуальная машина Lua"
Else 
  Debug "При создании в.м. Lua что-то пошло не так"
EndIf

If CallCFunction(#LuaLibrary, "luaL_openlibs", luaVM)
  Debug "Были подгружены стандартные библиотеки Lua"
Else
  Debug "Стандартные библиотеки Lua подгружены не были"
EndIf

PrototypeC luaL_loadstring(LuaVM, String.p-ascii)                                            ; Описываем процедуру. По идее, библиотека Lua принимает строки только в ascii кодировке.
LuaL_LoadString.luaL_loadstring=GetFunction(#LuaLibrary, "luaL_loadstring") 

Debug LuaL_LoadString(luaVM, "a = 1 + 1;")   ; Загружаем строку скрипта
Debug CallCFunction(#LuaLibrary, "lua_pcall", luaVM, 0, -1, 0) ; Выполняем скрипт

CallCFunction(#LuaLibrary, "lua_close", luaVM) ; Закрываем VM
CloseLibrary(#LuaLibrary)                               ; и выключаем Lua

Код компилируется и выполняется без сбоев, но действительно проверить его работоспособность не представляется возможным. Может кто занимался данным вопросом?

Отредактировано Тигрёнок (29.08.2014 21:33:45)