簡體   English   中英

將Lua編譯為C ++時如何使用ZeroBrane Studio IDE調試器

[英]How to use ZeroBrane Studio IDE debugger when lua is compiled as c++

我已經將Lua 5.3編譯為32位c ++ DLL和exe。 DLL包含除lua.cpp和luac.cpp之外的所有lua代碼。 exe編譯lua.cpp並使用DLL運行lua解釋器。 從命令行單獨運行時,這可以正常工作。 我希望能夠使用此DLL和exe從IDE運行。

如果我用自己的版本替換/ZeroBraneStudio/bin/lua53.dlllua53.exe ,則可以運行腳本(單擊兩個綠色箭頭)。 但是,調試不起作用,出現以下錯誤:

在動態鏈接庫lua53.dll中找不到過程入口點luaL_addlstring。

我可以看到發生這種情況是因為調試器正在使用luasocket。 \\ZeroBraneStudio\\bin\\clibs53\\socket\\core.dll依賴於lua53.dll ,並且期望它包含編譯為c的lua。

那么,對此的正確解決方案是什么-是否也將luasocket編譯為c ++?

(如果這樣,是否有人有這樣做的指示/指導?我一直無法找到任何關於此的信息。)

謝謝。

我不確定DLL的編譯方式如何,但是錯誤消息可能表明luaL_addlstring和其他函數未由其導出。 如果正確導出了符號,則應該能夠加載luasocket並使調試工作。 有關相關討論,請參見此主題

另外,您不需要替換lua53庫和可執行文件,因為您可以按照文檔中所述使用path.lua53配置設置將IDE配置為使用自己的副本。

好的,我能夠使它工作。 解決方案是將luasocket編譯為c ++。 在這里,我不會提供有關如何執行此操作的完整說明,但有幾點希望可以幫助其他遇到相同問題的人:

  • 從這里得到了luasocket: https : //github.com/diegonehab/luasocket
  • 將所有* .c文件重命名為* .cpp
  • 將Lua52.props重命名為Lua.props(我正在使用lua 5.3,但似乎兼容嗎?)
  • 將lua標頭和lib放在適當的文件夾中
  • 在Visual Studio 2012中打開的解決方案
  • 解決了項目文件的小問題,例如文件的重命名。
  • 在luaopen_socket_core和luaopen_mime_core函數的聲明中添加了“ extern“ C””(lua能夠加載庫所必需)。
  • 內置解決方案
  • 將新的dll復制到clibs53 / socket和clibs53 / mime文件夾中。

我使用了Dependency Walker來幫助解決這個問題。 如果將來有人需要進一步的詳細信息,請發表評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM