gpt4 book ai didi

c++ - Lua DLL 库依赖

转载 作者:可可西里 更新时间:2023-11-01 11:16:44 26 4
gpt4 key购买 nike

我为 windows 创建了一个 lua 模块,一个 DLL,它有很多依赖项。这些依赖关系是模块 DLL 正常运行所必需的,其中大部分依赖关系是 C++ 运行时库(libstdc+-6.dll 和 libgcc_s_seh-1.dll 等)。我正在尝试使用 package.loadlib 调用加载模块:

init = assert(package.loadlib("C:\\Path\\To\\My\\Module.DLL", "luaopen_MyModule"))
init()

依赖项和模块 DLL 位于与主要可执行文件的 DLL 不同的文件夹中。因此,似乎 package.loadlib 找不到模块的依赖项。当这些依赖项的路径被添加到 PATH 变量时它工作正常,但我不允许在将使用 lua 模块的机器上修改 PATH,我也不能静态链接到依赖项。

有什么方法可以指定从 lua 中搜索依赖项的路径吗? lua 将仅在 Windows 系统上使用,因此解决方案可能取决于平台。

最佳答案

如果您无法静态包含这些依赖项或修改 PATH 以影响 DLL 搜索,您可以尝试另一种选择:在您之前使用相同的 package.loadlib 调用直接加载这些依赖项加载您的 Module.DLL。当我想确保我的库所依赖的 DLL 是从正确的位置加载时,我使用了它:

package.loadlib([[C:\Path\To\Whatever\libstdc++-6.dll]], "")
init = assert(package.loadlib("C:\\Path\\To\\My\\Module.DLL", "luaopen_MyModule"))
init()

关于c++ - Lua DLL 库依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37762492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com