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”

    • 最后贴上运行的截图

  • 相关阅读:
    Linux系统类别
    ST-GCN基于skeleton的动作识别
    (gcc/g++)/clang/cl编译器
    羽毛球经典教材范例
    opencv批量读取图片
    十六、mysql 变量
    十五、mysql 存储过程
    十四、mysql 视图
    十三、mysql TCL语言
    十二、mysql 标识列
  • 原文地址:https://www.cnblogs.com/ccccnzb/p/7568814.html
Copyright © 2011-2022 走看看