先说方法:把VS自带的库目录全部删除,然后加上:$(LibraryPath)
网上查了很多方法,对我都没有用。后来自己找到解决办法了,这里分享给大家。
我想编译64位的程序,于是选择了debug + x64的编译环境。
我报的错误是:msvcprtd.lib(MSVCP110D.dll) : fatal error LNK1112:模块计算机类型“X86”与目标计算机类型“X64”冲突。
首先,产生这个问题的原因是因为静态库(.lib)文件的位数和我们选择的目标位数不一样,我们需要使用正确类型的静态库才行。
打开属性页面会看到,在库目录中,除了我们自己编辑的目录外,还有VS自带的目录。比如:$(WindowsSDK_LibraryPath_x86);
网上说把x86改成x64就可以了,但是我失败了。
最终解决方法是把VS自带的库目录全部删除,然后新增这一项:$(LibraryPath)
这样就可以了。
其实我还尝试过另外的方法,就是把报错的那些静态库文件记下来,然后在计算机里找到64位的对应的库文件,然后单独放到一个文件夹,加入属性页的库目录,但是要放在第一项。这样不会报错,但是后续的操作中却出现了一些很奇怪的错误,比如报了:
错误 C1189 #error: The C++ Standard Library forbids macroizing keywords. Enable warning C4005 to find the forbidden macro.
然后还有一些恶心的无法识别的外部符号的错误。最后找到了那个配置方法才解决的。
这个方法不一定都适用,但不妨一试。
PS:VS环境配置真恶心。本以为用VS快一年,总不会在环境上栽那么多跟头了,结果一直在环境上面和VS斗智斗勇,心累...