编译出错问题解决
Library machine type 'X86' conflicts with target machine type 'x64'
分析原因:
由于zlib、gif、png、jpeg、jsoncpp、farmhash、fft2d、highwayhash、 grpc工程属性配置的机型为X86(应为X64),导致生成的库文件有问题;估计是CMake在Windows下有Bug,导致使用CMake生成VS前的修改没有完全生效,需要再手动修改确认。
解决方法如下:
找到下面的lib工程:
对各工程属性配置做2处修改确认工作:
1. RuntimeLibrary:将MD修改为MT;
2. 目标机型:将X86修改为X64;
具体步骤如下:
以解决gif\install\lib\giflib.lib问题为例:
首先,在工程目录内找到giflib.sln文件:
打开工程,选择Release,在Win32下拉列表内选择配置管理器,
弹出如下对话框,在Win32下拉列表内选择“New”:
在对话框选择x64,点击OK即可配置x64平台:
在giflib工程上,点击鼠标右键,选择“Properties”;
弹出属性对话框:点击C/C++—Code Generation—Runtime Library—将MD修改为MT:
将Libration—All Options—Addition Options—将x86修改为x64:
在Release下编译此工程:
显示0错误即可:
打开Everything软件,在软件内输入giflib.lib:
将最新生成的库文件拷贝到编译提示的路径下:
编译后生成的.lib文件如下(在x64文件夹下):
将此文件拷贝到代码提示的路径下(gif\install\lib\giflib.lib)并替换:
解决png\install\lib\libpng12_static.lib:
选择Release模式,配置X64平台:
在对话框内选择X64,点确定:
在libpng12_static工程上,点右键—属性—C/C++—Code Generation—Runtime Library—将MD修改为MT;
将Librarian——All Options——Additional Options:X86修改为X64:
Release下,编译png12_stitic工程
复制X64文件下生成的.lib文件:
将其粘贴到编译提示的库文件路径下:
按照上面的步骤,修改剩下的几个工程配置属性,并将生成的最新库文件放到所需路径下。
最后,再编译proto_text工程,确保编译0错误: