VC学习笔记----常见错误调试

fatal error C1083

问题描述:无法打开包括文件:“iostream.h”: No such file or directory
解决方案:应该写成<iostream>
  • 在VC2010上面采用C++风格的头文件而不是C风格的头文件,除非你是在用C。
  • 所有的C++库在std命名空间中定义:using namespace std;
  • 标准头文件:#include <some_file.h>
  • 用户自定义头文件:#include "my_file.h"

 

C头文件
可以继续使用
C++ 
(C++98后取消)
C++ 98 ("c"开头,去掉".h"后缀)
建议使用
stdio.h 
iostream.h
<iostream>
    <cstdlib>
    <cstdio> 
assert.h   <cassert>

C2144

问题描述:int should be preceded by :

解决方案:这个是从C#转C++遇到的一个问题。

C# 语法是这样的:
public int read();
c++语法是这样的:
public:
int read();
 

error C2664

问题描述:“MessageBoxW”: 不能将参数 2 从“const char [17]”转换“LPCWSTR” 

解决方案:字符集问题,项目-->Properties-->Configuration Properties-->Character Set=Unicode

warning C4996

问题描述: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.
解决方案:这是因为VC从2005版本开始,微软引入了一系列的安全加强的函数来增强CRT(C运行时),这里对应的是strcpy_s。_s意为safe的意思,同样的道理,strcat也是同样。因此要解决这个问题,我们可以用strcpy_s来替换strcpy,但是注意strcpy_s并非所有编译器都提供,因此如果要跨编译器,请采用错误信息中所提示的方式,定义_CRT_SECURE_NO_WARNINGS宏来掩耳盗铃吧。另外注意并非所有的加强函数都是在屁股后面加_s,比如stricmp这个字符串比较函数的增强版名字是_stricmp。下面,用strcpy_s来更改程序:
 

error LNK2001

问题描述:unresolved external symbol _mainCRTStartup 
解决方案:没有定义main函数

error LNK2019

问题描述:无法解析的外部符号 __imp__InternetGetCookieA@16 ,该符号在函数 "void __cdecl MySend(unsigned int)" (?MySend@@YAXI@Z) 中被引用(其他类似的错误也一样)
解决方案:应该是你用到了一个库函数,但是你的项目没有把它的库加进去。 项目 --> 属性 --> 链接器 -->  输入 --> 附近依赖项 填入你使用到的库

你可能感兴趣的:(学习笔记)