zoukankan      html  css  js  c++  java
  • 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));
  • 相关阅读:
    Hello World
    查找字符串 fiand
    stdou,write与print()
    python 中 按位 与 & ,| ,^ ,~,
    3*3元素主对角元素之和
    Python random() 函数
    文本颜色设计
    if __name__=="__main__
    join函数
    ProGAN论文的翻译+学习体会
  • 原文地址:https://www.cnblogs.com/l2017/p/11365550.html
Copyright © 2011-2022 走看看