Ошибка загрузки библиотеки VCLua

#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)