最近有一个网友问到这个问题,我以前也遇到过.关于编译/预编译指令,以前已经有很多网友总结过了,我只是在Windows与Console的区别上扔出一小块砖头:)
一般情况下,这些指令都会有IDE给我们设置好,不需要我们动手,但在有些特殊情况下,却需要我们去修改.如果参数不合适,可能会出现如下的错误:nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main这些区别主要体现在两个方面:
Preprocessor definitions和 project options
Windows程序:
Project->Settings页的c/c++选项卡的Preprocessor definitions:有如下宏 _WINDOWS
Link页的Project options里面有/subsystem:windows
来表明该程序是Windows程序而不是Console程序.
Console程序:
与前者对应,这里应该分别是:_CONSOLE和/subsystem:console无论是Console还是Windows,他们所用的连接库是:
debug:Debug Multithread DLL
release:Multithread DLL
我们可以在Project->Settings页的c/c++选项卡的Category组合框里选Code Generation,然后在Use run-time library组合框里进行选择.