Caffe番外:Protobuf3.1.0 VS2013配置问题

来源:互联网 发布:音乐分轨软件 编辑:程序博客网 时间:2024/06/08 10:53

1. error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(main.obj 中)

LNK2038

解决方法:
项目属性——配置属性——C/C++-代码生成——运行库——选择多线程(MT)

简单地说,就是使用纯粹的static模式,这也是google-protobuf所推荐的。Dynamic模式同样可以支持,但VS默认的多线程调试MDD就像混合了static与dynamic一样,造成LNK2038。

LNK2038 Solution

问题说明参考博文问题2
详细解释参考这里

2. error LNK2005:_heap_alloc已经在libcmt.lib中定义

LNK2005

解决方法(Static版):
项目属性——配置属性——链接器——输入——忽略特定默认库:libcmt.lib

LNK2005 Solution

这其实同样是MT、MDD引起的麻烦,详细解释参考博文问题3。

3. error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突

多发生在需要切换使用32/64位的Protobuf时,解决办法很简单:32位引入32位protobuf编译出的.lib,64位用64位的。

在Protobuf3.1.0-VS2013中,默认生成的protoc.exe貌似是64位的,这一点可以在配置管理器中看出来:各项目是X64而不是Win32,所以它生成的.lib也是供64位用的。而用官方cmake方法nmake出来的Debug/Release版本是默认32位(如果你没有额外添加其他参数的话)。

X64

0 0
原创粉丝点击