使用C++编译protobuf为dll库

下载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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注