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”

    • 最后贴上运行的截图

  • 相关阅读:
    Cocos2d-js 开发记录:图片数据资源等的异步加载
    Cocos2d-js 开发记录:声音播放
    Cocos2d-js 开发记录-初始
    PAT 1064 Complete Binary Search Tree
    python 对象属性与 getattr & setattr
    LeetCode Text Justification
    LeetCode Valid Number
    LeetCode String to Integer (atoi)
    struts2--标签取值
    java--Hibernate实现分页查询
  • 原文地址:https://www.cnblogs.com/ccccnzb/p/7568814.html
Copyright © 2011-2022 走看看