关于Lua脚本中跨路径引用以及多重跨路径引用的问题
来源:互联网 发布:axure rp mac 编辑:程序博客网 时间:2024/06/14 04:50
问题1:载入其他目录的lua脚本,并且其中引用了和lua脚本放在同目录中的dll文件
比如Lua脚本中有这样一句
require("test")用来载入同目录下名为test.dll的库,直接运行这个Lua脚本是没问题的
但是在其他目录下的exe文件将此Lua脚本嵌入运行就会找不到test.dll了
因为当前运行的exe和dll没在同一个目录
而require("c:\\dir\\test")这样是行不通的,require的参数只能是包名,而不能有路径
得通过设置路径package.cpath来实现,注意这里是package.cpath而不是package.path
package.cpath是用来设置后缀为dll的路径
而package.path是用来设置后缀为lua的路径
请根据自己的情况来决定
package.cpath的格式是用分号隔开各路径,并用问号做通配,例如:.\?.dll;.\?51.dll;
把我们自己的路径加进去
package.cpath = package.cpath..";"..myWorkPath.."\\?.dll"
然后在使用require语句就能正常引用了
问题2:接上面问题的情况,解决后发现另一个问题,刚刚引用的dll中调用了另外一个dll,引用失败
很明显问题还是类似,要加载的dll和exe没有在同一目录
这里需要把dll目录添加到加载路径中
找到一篇文章详细介绍这种情况:http://blog.csdn.net/zhufangyou/article/details/6423751
里面有一个MSDN的链接的详细说明,提到了SetDllDirectory这个函数,可惜只支持Win8
而里面提供的几个方法:
SetDllDirectory,据说不同版本的Windows有兼容问题
SetCurrentDirectory,脚本运行时间很长,担心对其他模块有影响
最后一个是把载入dll的方式改为LoadLibraryEx("DLL绝对路径", NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
通过指定LOAD_WITH_ALTERED_SEARCH_PATH,让系统DLL搜索顺序从DLL所在目录开始。
但是难道去改Lua内部逻辑?是的,正好找到云风的一篇博客提到修改Lua载入dll的路径问题的
http://blog.codingnow.com/2006/12/loadlibrary_search_order.html
里面有提到修改位置,再根据这片博客的编译方法:
http://dipplum.com/2009/11/09/visualc-compile-lua/
终于把载入的问题全搞定了
0 0
- 关于Lua脚本中跨路径引用以及多重跨路径引用的问题
- 关于Lua脚本中跨路径引用以及多重跨路径引用的问题
- javaweb中关于引用css和image的路径问题
- jsf 中 引用路径时候的问题
- JavaScript引用的路径问题
- php magento关于图片路径引用问题
- 网站路径问题(引用)
- src 引用路径问题
- 引用文件路径问题
- 路径引用问题
- 一个关于css中图片相对路径引用的示例
- 关于在CI中引用路径的问题 File does not exist
- JSP中引用图片路径问题
- Jsp和Servlet中引用路径问题
- JSP界面中引用相对路径问题
- 模版页中引用文件路径的问题
- 模版页中引用文件路径的问题
- 模版页中引用文件路径的问题
- ODAC使用
- 两个人在一起,不要说永远,要说珍惜。
- OpenCV学习记录2//浅尝图像金字塔
- 10个有关String的面试问题
- matlab编辑器颜色风格设置
- 关于Lua脚本中跨路径引用以及多重跨路径引用的问题
- ubuntu 12.04中搭建tftp服务器
- 两个人在一起,不要说永远,要说珍惜。
- walk
- Python特殊语法:filter、map、reduce、lambda、yield
- 扩展图形函数3,alpha混合
- WINDOW MOBILE 6.1使用SQLite小结1
- ExtJs4 选主题控件 - examples源码分析
- C/C++ 嵌套结构体动态内存管理实现