在Windows下用MinGW编译Protobuffer然后踩了大坑

  1. 1. test链接错误
  2. 2. 解决

最近在研究云风大佬的Skynet。废了很大劲终于是把Socket给调通了,接下来就是需要选择通信的协议。一开始我是打算用sproto,但是我只找到了一个七年前的cpp-sproto项目,而且这个比较协议比较冷门。

我选择了protobuffer作为通信协议,一是我目前任职的公司使用的就是protobuffer,可以少付出一些学习成本。二是这个项目比较热门,毕竟是谷歌主导的开源项目。

test链接错误

一开始我是打算老老实实跟着Github上的Readme走的,protobuff的官网也统统指向Github上的仓库。结果链接单元测试的时候发生了错误,然后我就在Google、StackOverflow和GitHub Issue里绕啊绕。

虽然只要在cmake选项里选择不build单元测试就可以绕开这个问题,但是架不住我想刨根问底。

解决

最后我终于在海量的Issue里找到一个老哥解决了这个问题,他甚至已经向主分支提交了代码,而我下载的3.17版本刚好没有这个部分代码。

于是把他的修改手动同步到我下载的源代码里,问题就解决了。具体参考这个Commit

Fix #8748 tests.exe link failure under mingw/mingw64 (#8751)