#lua #window
#lua #окно
Вопрос:
Я загрузил библиотеку VCLua здесь. Я создал новый файл с именем program.lua и ввел там код, который есть в руководстве:
require "vcl"
mainForm = VCL.Form("mainForm")
mainForm.Caption = "My first VCLua application"
mainForm._= { position="podesktopcenter", height=400, width=600}
mainForm.onclosequery = "onCloseQueryEventHandler"
function onCloseQueryEventHandler(Sender)
return true -- the form can be closed
end
mainMenu = VCL.MainMenu(mainForm,"mainMenu")
mainMenu:LoadFromTable({
{name="mmfile", caption="amp;File",
submenu={
{name="mmOpen", caption="Open...", onclick="onMenuOpenClick", shortcut="Ctrl O"},
{caption="-",},
{caption="Exit", onclick="onMenuExitClick", shortcut="Alt F4"},
}
},
{name="mmhelp", caption="amp;Help", RightJustify=true,
submenu = {
{caption="Help", shortcut="F1", checked=true},
{caption="-",},
}
}
})
mainMenu:Find("mmhelp"):Add("mmAbout")._= {caption="About", onclick="onMenuAboutClick", enabled=false}
function onMenuExitClick()
mainForm:Close()
end
mainToolbar = VCL.ToolBar(mainForm,"mainToolbar")
mainToolbar:LoadFromTable({
{name="mtbOpen", onclick="onMenuOpenClick"},
{name="mtbExit", onclick="onMenuExitClick"},
})
mainToolbar:Find("mtbOpen").enabled=false
mainForm:ShowModal()
mainForm:Free()
Но когда я хочу ее запустить (у меня есть оба vcl.dll и vcl.so файлы в каталоге, где находится интерпретатор lua), он пишет lua: error loading module 'vcl' from file 'C:UsersAdminDesktopProgramsluavcl.dll':
. Трассировка стека не говорит ничего полезного. Итак, кто-нибудь может сказать мне, как решить мою проблему?
Ответ №1:
Динамические библиотеки для Lua обычно компилируются с библиотеками DLL Lua; вы можете получить эту ошибку в случае, когда динамическая библиотека не может найти библиотеки DLL Lua, с которыми она связана. Вы можете увидеть, почему / как он выходит из строя, используя такой инструмент, как dependency walker, который может показать вам, от каких других DLL зависит ваша библиотека, а также какую ошибку времени выполнения вы получаете при ее загрузке (вы можете использовать режим «Профиль», чтобы увидеть это).
Комментарии:
1. Это означало бы, что мне не хватает dll. Хорошо, средство проверки зависимостей не сказало ничего полезного, стандартные системные библиотеки и lua 5.1 dll, которая находится в каталоге, где vcl.dll размещается.
2. Хорошо, я использовал профилировщик, и вывод мне кажется странным:
DllMain(0x10000000, DLL_PROCESS_ATTACH, 0x00000000) in "VCL.DLL" returned 0 (0x0).
может ли dll быть … встроена? Я нашел следующее репозиторий github: github.com/rmbishop/VCLua , но я не могу собрать его сам (нет компилятора delphi)