当前位置: 首页 > >

Lua脚本层面调用外部DLL

发布时间:

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明

任何语言都有办法和lua交互,原因是它们都可以和C交互,而LUA是用C写的,所以....。比如:java可以通过jni和C/C++交互,C#可以通过*台调用和native交互。所以java和C#都可以和lua交互。

?


(一)package.loadlib方式:


local f = package.loadlib("d://w32.dll", "luaopen_w32") --获取DLL中抛出函数地址

(二)require方式:


package.path = ""

require("w32") --自动调用w32.dll的luaopen_w32抛出函数,w32.dll要在LUA_CPATH搜索路径


w32.ShellOpen("地下城服务端下载.bat")


PS:


LUA 调用外部DLL,DLL 中包含库函数和抛出函数,当不是使用package.loadlib来使用外部DLL时,?而是使用另一种方式require,那么就需要注意一些规则:


DLL中的抛出函数原型必须是:?[extern "C" ] __declspec(dllexport) int luaopen_XXX(LuaState* L),而且XXX是DLL的文件名。[]是可选符号,而package.loadlib使用方式是不需要这些规则的,但是为了兼容性好,即:DLL可以同时使用以上两种方式使用,还是按规则命名抛出函数。


?


PS:也可以参考下本blog中另一篇《Lua调用DLL 》,转载网络上的一个例子(被我修改过)


http://cjbskysea.blogbus.com/logs/46142537.html


相关推荐


友情链接: