# luaplus51-all-Build **Repository Path**: qzez/luaplus51-all-build ## Basic Information - **Project Name**: luaplus51-all-Build - **Description**: LuaPlus Win11 + VS2022(v143) 编译通过 Lua C++ 互相调用测试 分支dll-dynamic为动态库 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-20 - **Last Updated**: 2022-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LuaPlusStaticLib #### 介绍 LuaPlus Win11 + VS2022(v143) 编译通过 Lua C++ 互相调用测试 #### 源仓库 https://github.com/jjensen/luaplus51-all #### 感谢 https://blog.csdn.net/lunatic7/article/details/77787970 源仓库编译不来,什么jam啥的也不懂 这个是根据上面感谢“网址”编译成功的 #### 编译教程 1. 下载Luaplus 源文件 https://github.com/jjensen/luaplus51-all 2. vs2022 新建C++静态库工程 如:LuaPlusStaticLib 3. LuaPlusStaticLib目录下新建 src tilde 两个目录 4. win32项目-静态库-去掉预编译头 (安全开发周期) 5. 修改工程属性 c/c++ 常规 附加包含目录 填上新建的 src tilde 两个目录 常规用多字节集 7. 目录.\LuaPlusStaticLib 下加入 luaplus51-all-master\Src\LuaPlus 的全部文件(不包括文件夹) 8. 目录.\LuaPlusStaticLib\src 下为 luaplus51-all-master\Src\LuaPlus\lua53\src 的源文件(全部) 9. 目录.\LuaPlusStaticLib\tilde 下为 luaplus51-all-master\Src\tilde 的全部文件 6. 新建筛选器 LuaPlusH LuaPlustilde luaSrc 10. LuaPlusH 添加-现有项 选择.\LuaPlusStaticLib 下刚加入的文件 11. LuaPlustilde 添加-现有项 选择.\LuaPlusStaticLib\tilde 下的.h文件(.cpp不要加入) 12. luaSrc 添加-现有项 选择.\LuaPlusStaticLib\src 下下的全部文件 13. c/c++ 预处理器 预处理定义添加 _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE LUA_OPNAMES LUAPLUS_LIB 14. ==>编译 15. 使用LuaPlueHelper LuaPlusTest 属性 - C/C++ - 语言 - 符合模式 -> 选择否 注释掉:以下代码 或自己改写 ```cpp operator const wchar_t* () { return refobj.GetWString(); } operator std::wstring() { return std::wstring(refobj.GetWString()); } ``` #### LuaPlus使用参考 ```cpp #include "../LuaPlusStaticLib/LuaPlus.h" // https://www.cnblogs.com/ly4cn/p/285439.html LuaPlus教程 #if defined(DEBUG) || defined(_DEBUG) #pragma comment(lib, "..\\Debug\\LuaPlusStaticLib.lib") #else #pragma comment(lib, "..\\Release\\LuaPlusStaticLib.lib") #endif using namespace LuaPlus; int add(int a, int b) { return a + b; } int _tmain(int argc, _TCHAR* argv[]) { LuaStateOwner state; if (!state) { printf("创建失败"); } printf("创建成功\n"); state->OpenLibs(); state->DoString("str='你好世界';print(str);"); state->GetGlobals().RegisterDirect("add", add); state->DoString("print(add(3,4))"); CLogger logger; logger.LuaTest(5, 11); // 类内方法调用Lua state->GetGlobals().RegisterDirect("ladd", logger, &CLogger::cadd);// 注册类方法调用Lua state->DoString("laddv = ladd(1112,1231);"); printf("ladd(1112,1231)=%d\n",(int)state->GetGlobal("laddv").GetInteger());// 获取lua变量 state->DoString("function luaAdd(x, y) return x + y end"); LuaObject obj = state->GetGlobal("luaAdd");// C++调用Lua函数 LuaFunction luaAdd =obj; printf("luaAdd(2,55)=%d\n", luaAdd(2,55)); return 0; } ```