VS2008 编译 链接器错误以及使用C语言函数的警告
在使用VS做项目的时候,在VS2005的版本开始,经常会出现两类错误,一个是在编译的时候,连接器经常死掉,无法成功编译,另外一个是使用了C语言函数后,会发出警告。
下面分别来说说这两个问题的解决方案。
一,链接器无法正常工作的解决方法:
在使用VS开发,进行编译时,往往在语法没有错误的情况下,依然会频繁的出现链接失败,通常情况下,再build一次就好了。这个问题往往是由于增量链接导致的,可以在项目的属性中,进行配置,不进行增量链接,就可以解决这个问题了。具体步骤是,project->Properties->Linker->Enable Incremental Linking设置为No(/Incremental:NO)即可。中文版的是工程->属性->链接->增量链接,设置为NO。默认情况下,这个设置是YES,当设置为NO时,链接器无法正常工作的问题往往都能解决了。
二、使用C语言函数报警告的解决方法:
在开发过程中,若使用了某些C语言函数,可能会遇到很多警告,如
warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>
warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>
等等诸如此类的警告,这些警告,主要因为那些C库的函数,很多函数内部是不进行参数检测的(包括越界类的),微软担心使用这些会造成内存异常,所以就改写了同样功能的函数,改写了的函数进行了参数的检测,使用这些新的函数会更安全和便捷。关于这些改写的函数你不用专门去记忆,因为编译器对于每个函数在给出警告时,都会告诉你相应的安全函数,查看警告信息就可以获知,在使用时也再查看一下MSDN详细了解。
1> 根据下面的warning提示:参见“fopen”的声明
2> 还是根据warning提示的地三句话:use _CRT_SECURE_NO_DEPRECATE
3> 降低警告级别:项目|属性|配置属性|C/C++|常规,自己根据情况降低警告级别(此法不推荐)