• VC++ 2005编译链接错误汇总


    VC++ 2005编译链接错误汇总
    --------------------------------------------------------------------------
    1 文本字体需要使用Unicode,编译错误C2220和警告C4819
    2 没有找到MSVCR80D.dll
    3 默认库“MSVCRT”与其他库的使用冲突
    4 warning C4996: 'getch' was declared deprecated
    iostream.h 和 iostream
    warning LNK4204: “…\Debug\vc80.pdb”缺少引用模块的调试信息
    7 去掉字符串操作函数的警告信息"_CRT_SECURE_NO_DEPRECATE"
    --------------------------------------------------------------------------
    1 编译错误C2220和警告C4819
    错误描述(在vs2005中,特别是查看别人的代码)
    .crt_dbg1.c : error C2220: warning treated as error - no 'object' file generated
    .crt_dbg1.c : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss

    只需要对次文件 Ctrl+A ,Ctrl+X, 然后再 Ctrl+V就搞定。(使文件变为unicode)VC++ <wbr>2005编译链接错误汇总

    --------------------------------------------------------------------------
    2 没有找到MSVCR80D.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题:
    1)微软对于这个问题应该也有处理,不过感觉不是很人性化。在“属性->配置属性->清单工具->常规“下有一个”使用FAT32解决办法,把它选成是,就可以了。(注意:一定要先配置这个选项,然后再编译工程,要不然还是不好用:)

    2)找到你的工程的文件夹,如(myproject),找到其下的myproject\myproject\Debug\ myproject.rec,把它删掉(删掉整个Debug目录也可以),重新编译,搞定!
     
    默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
    打开此项目的“属性页”对话框;单击“链接器”文件夹;单击“输入”属性页;选择“忽略所有默认库”属性或在“忽略指定库”属性中指定要忽略的库列表。“命令行”属性页将显示对这些属性所做的更改的效果。
    此问题在linker input 附加依赖项中添加: /nodefaultlib:msvcrt.lib
    --------------------------------------------------------------------------
    warning C4996: 'getch' was declared deprecated
    使用_getch()代替原有的getch().
    在使用VC 2005 的开发者会遇到这样的问题,在使用std命名空间库函数的时候,往往会出现类似于下面的警告:    warning C4996: strcpy was declared deprecated    出现这样的警告,是因为VC2005中认为CRT中的一组函数如果使用不当,可能会产生诸如内存泄露、缓冲区溢出、非法访问等安全问题。这些函数如:strcpy、strcat等。    对于这些问题,VC2005建议使用这些函数的更高级的安全版本,即在这些函数名后面加了一个_s的函数。这些安全版本函数使用起来更有效,也便于识别,如:strcpy_s,calloc_s等。    当然,如果执意使用老版本、非安全版本函数,可以使用_CRT_SECURE_NO_DEPRECATE标记来忽略这些警告问题。办法是在编译选项 C/C++ | Preprocessor | Preprocessor Definitions中,增加_CRT_SECURE_NO_DEPRECATE标记即可。
    --------------------------------------------------------------------------
    iostream.h 和 iostream
    iostream.h 和 iostream两个是不同的东东。前者是传统库函数中的头文件,后者(没有.h)是标准库中的头文件。而标准库中的东西,都是定义在std名字空间里,是为了防止污染全局名字空间。
    如果使用 iostream 头文件,就需要引用std,即加上using namespace std。
    --------------------------------------------------------------------------
    warning LNK4204: “…\Debug\vc80.pdb”缺少引用模块的调试信息;正在链接对象,如同没有调试信息一样
    终于搞清楚了:如果生成的是 debug 模式的可执行文件但链接的却是 release 库,或者,如果生成的是 release 版本的可执行文件但链接的却是 debug 库,那么就出现上述问题。
    --------------------------------------------------------------------------
    7 去掉字符串操作函数的警告信息"_CRT_SECURE_NO_DEPRECATE"
    解决办法:
        右键该项目,属性-->配置属性-->c/c++-->预处理器-->预处理器定添加如下字段_CRT_SECURE_NO_DEPRECATE标记即可。
    或者
    Project -> Properties  -> C/C++ -> Command Line加入/D "_CRT_SECURE_NO_DEPRECATE"

     

        出现这样的警告,是因为VC2005中认为CRT中的一组函数如果使用不当,可能会产生诸如内存泄露、缓冲区溢出、非法访问等安全问题。这些函数如:strcpy、strcat等。对于这些问题,可以使用_CRT_SECURE_NO_DEPRECATE标记来忽略这些警告问题。方法如上。


    作者:古梅飞动
    公司:蜜团科技
    出处:http://www.mitsofts.com/index.php
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    [ABC200E] Patisserie ABC 2
    [CF1521E] Nastia and a Beautiful Matrix
    [CF1498D] Bananas in a Microwave
    [CF1515B] Phoenix and Puzzle
    [CF1519C] Berland Regional
    [CF1519B] The Cake Is a Lie
    [ZONe Energy Programming Contest C] MAD TEAM
    [洛谷P7480] Reboot from Blue
    [CF1508A] Binary Literature
    1371. 货币系统
  • 原文地址:https://www.cnblogs.com/luhuan860/p/1809897.html
Copyright © 2020-2023  润新知