lua链接dll的问题
来源:互联网 发布:烘焙论坛知乎 编辑:程序博客网 时间:2024/04/29 22:24
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)的工作目录下搜索的。
原文:http://blog.csdn.net/yanjun_1982/article/details/8951890
0 0
- lua链接dll的问题
- lua链接dll的问题
- DLL的显示链接
- DLL的链接方式
- DLL的显示链接
- DLL动态链接库共享数据段的问题
- 动态链接库(DLL)导出:需要注意的问题
- win32,x64 程序显式链接dll的问题
- VS 动态链接库(.dll)的加载问题
- 动态链接库dll和log4cpp的相关问题
- Lua直接调用动态链接库(DLL或so文件)
- lua的一个在线教程链接。。。
- 动态链接库DLL的链接
- dll的隐式链接
- dll的隐式链接
- Dll的链接使用细节
- lua——alien库实现lua调用C动态链接库(dll、so)
- DLL系列---Dll的隐式链接和显示链接
- V4L2 学习笔记1-驱动的注册过程1
- 一个java文件可以有多个类,但只能有一个与java文件名同名的public类
- WEB项目监控工具javameloday
- interface abstract 区别
- AOJ 579
- lua链接dll的问题
- Android 关于“设置->电池->电池已用时间”
- super()
- 黑马程序员_Java IO流(上)
- 第二周作业
- isalpha
- 很全面wpf布局基础
- CV技术公司
- java打印classpath路径