下载protobuf
我选择protobuf-3.21.12版本,这个版本依赖较少。
下载protobuf源码:https://github.com/protocolbuffers/protobuf/releases/tag/v3.21.12
选择protobuf-cpp版本
编译
进入目录,执行命令
mkdir build
cd build
cmake .. -A Win32 -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=ON
注意,必须使用win32,因为在魔兽平台lua中是32位,也必须选择Release版本,否则会加载失败。
命令执行成功后,在build文件夹中可以使用vs2022打开该项目。选择all build右键生成。
新建一个dll项目,右键项目,选择属性
C/C++ -> 常规 附加包含目录
添加protobuf源码目录:
J:\my\war3_dll\protobuf-3.21.12\protobuf-3.21.12\src
J:\my\war3_dll\rapidjson-master\rapidjson-master\include
加入这两个目录,第二个是rapidjson,因为这个版本的protobuf没有json库,rapidjson库比较简单容易添加。下载地址:https://github.com/Tencent/rapidjson
C/C++ 预处理器 预处理器定义
全部内容如下:
WIN32
NDEBUG
WAR3TCP_EXPORTS
_WINDOWS
_USRDLL
C/C++ 代码生成 运行库
必须选择 多线程(/MT)
链接器 常规 附加库目录
添加:
J:\my\war3_dll\protobuf-3.21.12\protobuf-3.21.12\build\Release
就是刚才编译的protobuf后的dll库目录
链接器 输入 附加依赖项
新增这三个:
libprotobuf.lib
libprotoc.lib
Ws2_32.lib