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 '..\bin\test.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)的工作目录下搜索的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。