UE引入 protobuf 问题记录

注意:一定要先看完再操作,因为过程挺繁琐的,一定要把我的过程以及参考网站的内容都看一下再操作。这篇文章也不是保姆级的,有些东西需要观看者自己思考思考,不然很可能一直报错解决不了。

参考网站:向UE5项目中集成Protobuf - 掘金 (juejin.cn)

最下面的第二种方法才引入porotobuf 成功。

第一种方法,失败了,但是也算经验。使用的是最新版的protobuf,使用cmake生成,再用visual studio编译出来,然后将库文件和头文件复制到自己的工程里,下面是报错的解决。

1.在引入时只需要放头文件和lib库,如果连带cc文件一起复制过去,编译器会自动把cc文件一起编译,会报一大堆错误。

2.PROTOBUF_ENABLE_DEBUG_LOGGING_MAY_LEAK_PII等等一些宏报错没有定义,则在文件里直接把相关的宏块中的代码掉,只留#else里面的内容。

3.ue中有个宏verify,和protobuf库中的一个verify函数冲突,暂时只能注释掉protobuf的这个verify函数,在btree.h和btree_container.h

4.generated_message_reflection.h中的InRealOneof函数中,函数的返回值需要显示的判断是否为空,返回值改成 (field->real_containing_oneof() != nullptr)

5.把文件复制过去后,还需要把库文件和头文件路径添加到对应模块的build.cs文件中。

第二种方法,参考连接:向UE5项目中集成Protobuf - 掘金 (juejin.cn)

1.需要先下载vcpkg,GitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS

可以看一下vcpkg的git仓库底下的说明,使用git拉取vcpkg, 然后执行vcpkg文件夹下的bat文件。

2.安装protobuf包,执行完第一步,会在vcpkg出现一个vcpkg.exe, 现在就可以安装protobuf包了。这个过程需要联网,有些公司内网很麻烦,速度可能会很慢

命令是,.\vcpkg install protobuf protobuf:x64-windows

截图:

3.完成第2步后,在vcpkg/packages/文件夹下会出现 protobuf 库以及它的依赖库,然后就可以把库文件、头文件夹复制到UE工程里了,我用的是其中bin和lib目录下的库,debug下的没用。还有就是vcpkg/packages/protobuf/tools/protobuf文件夹下有protoc.exe可以使用,这个使用方法就不细说了,跟使用命令行一样。

截图:

4.然后开始UE工程项目的编译

5.在...build.cs文件里添加头文件路径和库路径,我填的都是自己的路径,其他人要填本机上合适的路径

截图:

6.删除UE工程下的Intermediate,右键.uproject文件,点击重新生成visual studio工程。

7.打开.sln,右键项目,点击重新生成,在编译时也会报错,解决报错就按照第一种方法里的,所以没有删除第一种方法。如果看到宏定义报错,把宏前面的 #if 改成 #ifdef 是最正确的,我第一种方法里的直接删除太笨了。

8.编译完成后,运行时需要把protobuf的 .dll 动态库放到Binaries\Win64下才能运行起来,不然会报错libprotobuf.dll找不到之类的错误,用编辑器启动的话, .dll 动态库就需要放到插件的Binaries\Win64下面,比如:Plugins\你的Plugin\Binaries\Win64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值