使用Cmake合并dll

之所以写这篇博客,是因为周五打包被坑了2个小时- -!

我刚进一个新项目用的xlua,我之前用tolua,老大让我维护xlua框架写了些工具,然后又把xlua更新了,更新后在window上都正常,在ios上就编不过,我翻遍文件夹也找不到那个dll,并且发现在LuaDll里面方法反射是没有报错,但是编译却出了bug,后来发现是之前离职的兄弟把一个dll注入了xlua,dll,最后查了些文档,把问题定位到注入dll的问题


前提条件:

1.visual tudio有c++模块

2.cmake下载,官网下,windows的比较简单(别的平台看下面的博客),下那个msi的安装,这个能直接安装,不过建议在安装的过程中把那个添加系统环境变量的勾勾上,不勾的话,你还是手动去配,安装完成后在cmd里面可以输入cmake -h确定是否安装成功

3.下载xlua源码

4.借阅以下两篇博客

https://my.oschina.net/u/3744374/blog/1586307

https://blog.csdn.net/xmousez/article/details/68490840


上图是win10编译cmake注入dll的截图,建议shift加右键把bat文件拖入,win10叫powershell,主要是为了看编译的问题,和输出路径


这样我们就完成了把protobuf库注入到xlua.dll


使用的时候就可以 [csharp]代码

 const string LUADLL = "xlua";

        [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
       //对应pbc-lua53.c文件__declspec(dllexport) int luaopen_protobuf_c(lua_State *L)函数

        public static extern int luaopen_protobuf_c(System.IntPtr L);

        [MonoPInvokeCallback(typeof(XLua.LuaDLL.lua_CSFunction))]
        public static int LoadProtobuf(System.IntPtr L)
        {
            return luaopen_protobuf_c(L);
        }



猜你喜欢

转载自blog.csdn.net/qq_28301963/article/details/80865901