加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua链接dll的问题

发布时间:2020-12-14 22:16:13 所属栏目:大数据 来源:网络整理
导读:lua可以链接专门为lua写的dll,用require就可以了。但有个小地方是需要注意的。有场景如下: 1.有一个脚本require.lua,它放在script目录下。 2.有两个dll:test.dll,lua.dll,test.dll依赖于lua.dll,它们放在bin目录下。 3.script与bin是同级目录。 为了

lua可以链接专门为lua写的dll,用require就可以了。但有个小地方是需要注意的。有场景如下:

1.有一个脚本require.lua,它放在script目录下。

2.有两个dll:test.dll,lua.dll,test.dll依赖于lua.dll,它们放在bin目录下。

3.script与bin是同级目录。


为了使require.lua可以链接test.dll,在脚本要中修改lua搜索库的路径。脚本内容如下:

package.cpath = "..bin?.dll"
require "test"
运行脚本,却有以下报错:error loading module 'test' from file '..bintest.dll' 这个报错并不是说没有找到test.dll,而是在加载test.dll的时候出错了,只有两种可能,第1种是lua加载test.dll时有问题,第2种是test.dll的格式并不是可以给lua链接的那种,比如导出的函数名不对(要求导出的函数名为:luaopen_xxxx)。 后者是很容易排除的,看下代码确认下就可以了。那就只能是第1种可能。 但是test.dll看起来也很正常,它所依赖的lua.dll也没什么问题...... 等等,test.dll依赖lua.dll?那会不会是这里出问题了呢?虽然test.dll和lua.dll是同一个目录,但require.lua和lua.dll不是同一个目录啊。 把lua.dll复制到script目录下,让它与require.lua在同一个目录,运行脚本,结果正常了,没有报错。 其实到现在我也不是很了解dll的链接机制,我以为A依赖于B,就把AB放一起就好了,其实不然。 看来设定package.cpath只是设定了A的搜索路径,A所依赖的dll还是在主程序(这里是require.lua)的工作目录下搜索的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读