lua调用dll demo

Posted l2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua调用dll demo相关的知识,希望对你有一定的参考价值。

使用的是lua5.3

DllMain.cpp

 1 //生成的dll  是   lua_add53.dll
 2 //luaopen_lua_add
 3 extern "C" 
 4 #include "F:/lua_src/lua-5.3.5_Win64_vc15_lib/include/lua.h"  
 5 #include "F:/lua_src/lua-5.3.5_Win64_vc15_lib/include/lualib.h"  
 6 #include "F:/lua_src/lua-5.3.5_Win64_vc15_lib/include/lauxlib.h"
 7 ;
 8 #pragma comment(lib, "F:/lua_src/lua-5.3.5_Win64_vc15_lib/lua53.lib")
 9 
10 #include <iostream>  
11 using namespace std;
12 
13 extern "C" int ShowMsg(lua_State* luaEnv) 
14   cout << "Hello world from clibs!" << endl;
15   return 0; // 返回值个数为0个.  
16 
17 
18 extern "C" int sub2(lua_State* L)
19 
20   double op1 = luaL_checknumber(L, 1);
21   double op2 = luaL_checknumber(L, 2);
22   int temp = op1 - op2;
23   lua_pushnumber(L, temp);
24   return 1;
25 
26 
27 // part one: 要导出的函数列表
28 static luaL_Reg luaLibs[] = 
29      "ShowMsg", ShowMsg,
30      "sub2", sub2,
31      NULL, NULL 
32 ;
33 
34 // part two: DLL入口函数,Lua调用此DLL的入口函数.  
35 extern "C" __declspec(dllexport)
36 int luaopen_lua_add(lua_State* luaEnv)    //WinFeature是modole名, 将来require这个名字
37   //lua_register(luaEnv, "ShowMsg", ShowMsg);  //关键一行, 在luaState上注册好这个lib
38   //lua_register(luaEnv, "sub2", sub2);  //关键一行, 在luaState上注册好这个lib
39   lua_newtable(luaEnv);
40   luaL_setfuncs(luaEnv, luaLibs,0);
41   return 1;
42 

编译后是 lua_add53.dll

lua

1 local mytest = require "lua_add"
2 mytest.ShowMsg();
3 print(mytest.sub2(1,2));

 

以上是关于lua调用dll demo的主要内容,如果未能解决你的问题,请参考以下文章

lua5.2调用c++dll

lua调用失败是啥意思

lua调用cpp的DLL

LUA 如何调用DLL插件啊。

LUA调用 Dll 添加收藏夹操作!!!IE Chrome

lua里alien调用dll的types是怎么确定的?