zoukankan      html  css  js  c++  java
  • Lua 如何调用C打包的动态库

    • 参考地址
    看云上的《Lua编程入门》,比《Lua程序设计(第2版)中文》好多了
    https://www.kancloud.cn/thinkphp/lua-guide/43809
    
    SF上的编译Lua源码
    https://segmentfault.com/a/1190000004904799

    源码下载地址
    http://www.lua.org/ftp/lua-5.3.4.tar.gz

    SF的编译脚本挺酷的,脚本写好,确实省很多事。

    上边基本把需要的知识点都讲通了,我讲一下遇到的问题,及处理

    1. 看云上的这里是错误的,或者是旧版本的语法
    > require "WinFeature"
    > for k, v in pairs(WinFeature) do
    >>      print(k, v)
    >> end
    ShowMsgBox functon:0028AB90
    >

    需要改成

    dlltest = require "WinFeature"
    for k, v in pairs(dlltest) do
    print(k, v)
    end
    dlltest.ShowMsgBox()

      2. 这段代码需要用新版本的函数

    extern "C" __declspec(dllexport)  
    int luaopen_WinFeature(lua_State* luaEnv)  
    {  
        const char* const LIBRARY_NAME = "WinFeature";  
        luaL_register(luaEnv, LIBRARY_NAME, luaLibs);  
    
        return 1;  
    } 

    修改成

    extern "C" __declspec(dllexport)
    int luaopen_WinFeature(lua_State* luaEnv)
    {
        const char* const LIBRARY_NAME = "WinFeature";
        luaL_newlib(luaEnv, luaLibs);
    
        return 1;
    }

      3. 必须使用配套的 lua.dll lua.exe lua.lib

    一开始使用别人编译的Lua.exe,跑Dll,会报错:“multiple Lua VMs detected”

    • 最后贴上运行的截图

  • 相关阅读:
    yum之镜像加速
    MySQL5.7安装
    销售订单的批量审批/反审
    MM06E005 EXIT_SAPMM06E_013 采购订单增强
    直接用代码查找增强Enhancement
    SAP相关业务表
    模拟会计凭证审批 OO ALV(屏幕跳转、定位行数据、审批按钮)
    spark 和 fink
    说说spark
    golang server端的epoll
  • 原文地址:https://www.cnblogs.com/ccccnzb/p/7568814.html
Copyright © 2011-2022 走看看