• 如何编写lua扩展


    DLL部分:
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    #include <lua/lua.h>
    #include <lua/lualib.h>
    #include <lua/lauxlib.h>
    
    #ifdef __cplusplus
    }
    #endif
    
    #pragma comment( lib, "lua51.lib" )
    
    #define TOSTRING(x) #x
    #define EXPORT_SYMBOL_TO_LUA(str) { TOSTRING(str), str }
    
    static int MsgBox(lua_State* L)
    {
        const char* pStr = lua_tostring(L, -1);
        MessageBoxA( NULL, pStr, "message", MB_OK );
        return 0;
    }
    
    static const luaL_reg MyDLLFunctions [] =
    {
        EXPORT_SYMBOL_TO_LUA(MsgBox),
        {NULL, NULL}
    };
    //需要注意的地方,此函数命名与库名一致
    extern "C" int __declspec(dllexport) luaopen_DllForLua(lua_State* L)
    {
        luaL_openlib(L, "MyExt", MyDLLFunctions, 0);
        return 1;
    }
    
    Lua调用部分:
    n = 1;
    if n == 1 then					--加载方法一
    	local lib = package.loadlib("./Debug/DllForLua.dll", "luaopen_DllForLua");
    	if lib then
    		lib()                       --需要注意的地方
    	else
    		print("Load Dll Error!");
    	end
    elseif n == 2 then				--加载方法二
    	package.cpath = string.format("%s;./Debug/?.dll", package.cpath);
    	require("DllForLua")
    end
    
    MyExt.MsgBox("Everything is OK!");
    
  • 相关阅读:
    字符串Hash 学习笔记
    P4315 月下“毛景树” 题解
    page
    Equation
    Graph
    配置UOJ数据的正确姿势
    luogu2261余数求和题解--整除分块
    luogu2858奶牛零食题解--区间DP
    luogu1005矩阵取数游戏题解--区间DP
    luogu4677山区建小学题解--区间DP
  • 原文地址:https://www.cnblogs.com/LinuxHunter/p/1889399.html
Copyright © 2020-2023  润新知