蛋炒灬饭 2019-07-17 14:34 采纳率: 0%
浏览 482

Lua程序调用相同目录下自己写的C++动态库时总报错找不到模块

windows上用Lua程序调用相同目录下自己写的C++动态库时总报错找不到模块

一个很简单的lua程序,就是调用了一个自己写的dll,dll名字是“regulationDLL.dll”,并且和和lua的程序在同级目录,如图:
图片说明

一开始以为lua不会自己搜索当前路径下的dll,所以在代码中又重新制定了package.cpath,lua程序名:main.lua,全部代码如下:

package.path = package.path..';D:\\nichoal\\src\\?.lua'
package.cpath = package.cpath..';D:\\nichoal\\src\\?.dll'
print(package.cpath)
local ll = require "regulationDLL"

结果一运行就报错说找不到模块:
图片说明

我在lua的安装路径:“C:\Program Files (x86)\Lua\5.1”、“C:\Program Files (x86)\Lua\5.1\clibs”、“C:\Program Files (x86)\Lua\5.1\lib”这三个路径下都放了regulationDLL.dll,结果还是一样的报错
有没有哪位大神帮帮忙,困了我两天了。。。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-10 19:33
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    根据您提供的信息,您可以尝试以下方法来解决遇到的问题:

    1. 检查dll是否被正确复制到系统路径。您可以使用 ls 命令查看dll的位置,并确保它已经添加到了系统的PATH环境变量中。

    2. 确保您的项目路径包含正确的库文件路径。在您的主程序文件(例如 main.lua)中,您应该将 dll 文件路径写入到 package.cpath 变量中。例如:

    package.cpath = package.cpath .. ';D:\nichoal\src\?.dll'
    

    请注意,?.dll 是用于表示dll文件的前缀,具体取决于您的编译器和平台。如果您正在使用Visual Studio或Clang,那么这个前缀可能不同。

    1. 您可以尝试更新您的项目配置以指向正确的库文件。这通常涉及到更改编译选项或重新构建项目。具体步骤可能会因您的开发工具而异。

    2. 如果以上方法都无法解决问题,可能是由于其他原因导致的错误。在这种情况下,您可能需要查阅更详细的错误消息或者查看源码以获取更多关于问题的信息。

    希望这些信息对您有所帮助!如果还有任何疑问,请随时提问。

    评论

报告相同问题?