[转]在C++中容易出现的#error No Target Architecture
项目环境:win 7 64位,编译环境:VS2013
最近在写C++的项目,发现了自己很多不会的地方,这也使得我在C++中的成长变得比较快,下面我就说说我自己在写项目是遇到的一些问题,希望可以帮到一些人。
首先要提的是:
#error "No Target Architecture"
既然我用高亮展示了,那说明这个错误大家还是比较容易遇到的,因为这个错误花费了很长时间,所以必须要给大家说说,首先它不是咱们自己的头文件而是VS系统的头文件,这就让人摸不着头脑了,所以这就可以肯定的是我们的程序写的有问题。从哪开始排查呢?我就和大家说说我的方法,一般我遇到系统的头文件提示出错:
1、先看VS编译器的编译环境,是不是Debug模式,配置环境是不是X64(因为我的是64位的,这个因系统环境而异)
2、然后检查项目属性页的代码生成中的运行库是不是多线程调试MDd,这点还是比较重要的
3、前面都是检查编译器及系统的,现在开始检查代码了,先把错误放到百度或者Google搜一下,看看是否有前辈解决问题的经验。若没有,经Google得知这个是因为我们包含了不该包含的头文件导致的,这时候我们需要做的事情就是把所有系统头文件试着都替换成<windows.h>.
因为<windows.h>这个头文件中包含了大部分的系统文件,但是呢,其他头文件之间可能不能同时被包含,这个时候我们就需要用<windows.h>去做替换尝试,如果替换完没有报错,那说明你替换的头文件确实在<windows.h>中存在,若出现错误,那就继续包含原来的头文件。若没错这个问题就可以得到解决。
4、尤其是<windef.h><winuser.h>这些个头文件,替换完以后可以解决问题就万事大吉,可没解决的话,还要下一步的尝试,就是换下头文件的顺序,比如一开始是
#include <a.h>
#include <b.h>
这个时候把它换成
#include <b.h>
#include <a.h>
也许就可以解决问题。
5、最后给一点小的建议,遇到问题不要怕,要一步步的分析,这样你才可能越挫越勇,遇到的问题多并都解决了,就没那么多恐惧,最主要的是你想不想靠自己的能力来解决这个问题。