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 解释器。当 运行ning 从命令行单独运行时,这工作正常。我希望能够使用此 DLL 和 exe 从 IDE 运行。
如果我用自己的版本替换 /ZeroBraneStudio/bin/lua53.dll
和 lua53.exe
,我可以 运行 脚本(单击两个绿色箭头)。但是,调试不起作用,出现以下错误:
The procedure entry point luaL_addlstring could not be located in the dynamic link library lua53.dll.
我可以看到这是因为调试器正在使用 lua套接字。 \ZeroBraneStudio\bin\clibs53\socket\core.dll
依赖于 lua53.dll
,并期望它包含编译为 c.
的 lua
那么,正确的解决方案是什么 - 是否也将 luasocket 编译为 c++?
(而且,如果是这样,有人 instructions/guidance 这样做吗?我一直找不到这方面的任何信息。)
谢谢。
我不确定 DLL 是如何编译的,但错误消息可能表明 luaL_addlstring
和其他函数未由它导出。如果符号导出正确,您应该能够加载 luasocket 并进行调试。参见 this thread for the related discussion。
此外,您不需要替换 lua53 库和可执行文件,因为您可以使用 path.lua53
配置设置将 IDE 配置为使用您自己的副本,如 documentation.
好的,我可以让它工作了。解决方案是将 luasocket 编译为 c++。我不会在这里给出有关如何执行此操作的完整说明,但希望能帮助其他遇到相同问题的人:
- 从这里得到 luasocket:https://github.com/diegonehab/luasocket
- 将所有 *.c 文件重命名为 *.cpp
- 已将 Lua52.props 重命名为 Lua.props(我正在使用 lua 5.3,但似乎兼容?)
- 已将 lua headers 和库放在适当的文件夹中
- 2012 年 Visual Studio 打开解决方案
- 修复了项目文件的小问题,例如文件重命名。
- 在 luaopen_socket_core 和 luaopen_mime_core 函数的声明中添加了 'extern "C"'(lua 加载库所必需的)。
- 内置解决方案
- 已将新的 dll 复制到 clibs53/socket 和 clibs53/mime 文件夹中。
我使用 Dependency Walker 来帮助解决这个问题。如果以后有人想了解更多详情,请发表评论。
我已将 Lua 5.3 编译为 32 位 c++ DLL 和 exe。 DLL 包含除 lua.cpp 和 luac.cpp 之外的所有 lua 代码。 exe 编译 lua.cpp 并将 DLL 用于 运行 lua 解释器。当 运行ning 从命令行单独运行时,这工作正常。我希望能够使用此 DLL 和 exe 从 IDE 运行。
如果我用自己的版本替换 /ZeroBraneStudio/bin/lua53.dll
和 lua53.exe
,我可以 运行 脚本(单击两个绿色箭头)。但是,调试不起作用,出现以下错误:
The procedure entry point luaL_addlstring could not be located in the dynamic link library lua53.dll.
我可以看到这是因为调试器正在使用 lua套接字。 \ZeroBraneStudio\bin\clibs53\socket\core.dll
依赖于 lua53.dll
,并期望它包含编译为 c.
那么,正确的解决方案是什么 - 是否也将 luasocket 编译为 c++?
(而且,如果是这样,有人 instructions/guidance 这样做吗?我一直找不到这方面的任何信息。)
谢谢。
我不确定 DLL 是如何编译的,但错误消息可能表明 luaL_addlstring
和其他函数未由它导出。如果符号导出正确,您应该能够加载 luasocket 并进行调试。参见 this thread for the related discussion。
此外,您不需要替换 lua53 库和可执行文件,因为您可以使用 path.lua53
配置设置将 IDE 配置为使用您自己的副本,如 documentation.
好的,我可以让它工作了。解决方案是将 luasocket 编译为 c++。我不会在这里给出有关如何执行此操作的完整说明,但希望能帮助其他遇到相同问题的人:
- 从这里得到 luasocket:https://github.com/diegonehab/luasocket
- 将所有 *.c 文件重命名为 *.cpp
- 已将 Lua52.props 重命名为 Lua.props(我正在使用 lua 5.3,但似乎兼容?)
- 已将 lua headers 和库放在适当的文件夹中
- 2012 年 Visual Studio 打开解决方案
- 修复了项目文件的小问题,例如文件重命名。
- 在 luaopen_socket_core 和 luaopen_mime_core 函数的声明中添加了 'extern "C"'(lua 加载库所必需的)。
- 内置解决方案
- 已将新的 dll 复制到 clibs53/socket 和 clibs53/mime 文件夹中。
我使用 Dependency Walker 来帮助解决这个问题。如果以后有人想了解更多详情,请发表评论。