龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

vc中的使用技巧和常见错误(7)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
6.不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。 7.在不同的模块使用内联和非内联的编译选

  6.不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。

  7.在不同的模块使用内联和非内联的编译选项能够导致LNK2001。如果创建C++库时打开了函数内联(/Ob1或/Ob2),但是在描述该函数的相应头文件里却关闭了函数内联(没有inline关键字),这时将得到该错误信息。为避免该问题的发生,应该在相应的头文件中用inline关键字标志内联函数。

  8.不正确的/SUBSYSTEM或/ENTRY设置也能导致LNK2001。

  其实,产生LNK2001的原因还有很多,以上的原因只是一部分而已,对初学者来说这些就够理解一阵子了。但是,分析错误原因的目的是为了避免错误的发生。LNK2001错误虽然比较困难,但是只要注意到了上述问题,还是能够避免和予以解决的。

问题8:没有更新sdk而导致的编译出错

 如编译《windows核心编程》的附书源码,会出错
  Compiling...
ErrorShow.cpp
You are not using the latest Platform SDK header/library
files. This may prevent the project from building correctly.
e:学习电子书windows 核心编程programming_applicatin_for_microsoft_windows_sourcecodecmnhdr.h(212) : error C2065:

'GetWindowLongPtr' : undeclared identifier
e:学习电子书windows 核心编程programming_applicatin_for_microsoft_windows_sourcecodecmnhdr.h(212) : error C2065:

'GWLP_HINSTANCE' : undeclared identifier
e:学习电子书windows 核心编程programming_applicatin_for_microsoft_windows_sourcecode\01-errorshowerrorshow.cpp(83) :

error C2065: 'PCTSTR' : undeclared identifier
e:学习电子书windows 核心编程programming_applicatin_for_microsoft_windows_sourcecode\01-errorshowerrorshow.cpp(83) :

error C2146: syntax error : missing ')' before identifier 'LocalLock'
e:学习电子书windows 核心编程programming_applicatin_for_microsoft_windows_sourcecode\01-errorshowerrorshow.cpp(83) :

error C2059: syntax error : ')'
e:学习电子书windows 核心编程programming_applicatin_for_microsoft_windows_sourcecode\01-errorshowerrorshow.cpp(125) :

error C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'long (struct HWND__ *,unsigned int,unsigned int,long)' to

'in
t (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
        None of the functions with this name in scope match the target type
Error executing cl.exe.

类似这种很多需要更新sdk的错误
安装好sdk,然后配置路径

TOOL-》option-》direction下

在include下,添加
C:PROGRAM FILESMICROSOFT SDKINCLUDE

在lib下,添加

C:PROGRAM FILESMICROSOFT SDKLIB

这里假设sdk的安装路径是C:PROGRAM FILESMICROSOFT SDK

然后记得把这些添加的路径上移到第一的位置,切记


////////////////////////////////////////////////////////////////

1、fatal error C1010: unexpected end of file while looking for precompiled header directive。<br>
<br>
寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include &quot;stdafx.h&quot;) <br>
<br>
2、fatal error C1083: Cannot open include file&#58 'R…….h': No such file or directory<br>
<br>
不能打开包含文件“R…….h”:没有这样的文件或目录。<br>
<br>
3、error C2011: 'C……': 'class' type redefinition<br>
<br>
类“C……”重定义。<br>
<br>
4、error C2018: unknown character '0xa3'<br>
<br>
不认识的字符'0xa3'。(一般是汉字或中文标点符号)<br>
<br>
5、error C2057: expected constant expression<br>
<br>
希望是常量表达式。(一般出现在switch语句的case分支中)<br>
<br>
6、error C2065: 'IDD_MYDIALOG' : undeclared identifier<br>
<br>
“IDD_MYDIALOG”:未声明过的标识符。<br>
<br>
7、error C2082: redefinition of formal parameter 'bReset'<br>
<br>
函数参数“bReset”在函数体中重定义。<br>
<br>
8、error C2143: syntax error: missing ':' before '{' <br>
<br>
句法错误:“{”前缺少“;”。<br>
<br>
9、error C2146: syntax error : missing ';' before identifier 'dc'<br>
<br>
句法错误:在“dc”前丢了“;”。<br>
<br>
10、error C2196: case value '69' already used<br>
<br>
值69已经用过。(一般出现在switch语句的case分支中)<br>
<br>
11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'<br>
<br>
成员函数“OnTimer”没有在“CHelloView”中声明。<br>

12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'<br>
<br>
重载的函数“void reset(int)”在类“B”中找不到。<br>

13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention<br>

类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。<br>

14、error C2660: 'SetTimer' : function does not take 2 parameters<br>

“SetTimer”函数不传递2个参数。<br>

15、warning C4035: 'f……': no return value<br>
“f……”的return语句没有返回值。<br>

16、warning C4553: '= =' : operator has no effect; did you intend '='?<br>

没有效果的运算符“= =”;是否改为“=”?


17、warning C4700: local variable 'bReset' used without having been initialized<br>

局部变量“bReset”没有初始化就使用。

18、error C4716: 'CMyApp::InitInstance' : must return a value
“CMyApp::InitInstance”函数必须返回一个值。

19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing<br>

连接错误:不能打开P1.exe文件,以改写内容。(一般是P1.Exe还在运行,未关闭)

20、error LNK2001: unresolved external symbol &quot;public: virtual _ _thiscall C……::~C……(void)&quot;

连接时发现没有实现的外部符号(变量、函数等)
 
最常见的20种VC++编译错误信息 
 
    1、fatal error C1010: unexpected end of file while looking for precompiled header directive。
   寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h")

  2、fatal error C1083: Cannot open include file: 'R…….h': No such file or directory
    不能打开包含文件“R…….h”:没有这样的文件或目录。

  3、error C2011: 'C……': 'class' type redefinition
    类“C……”重定义。

  4、error C2018: unknown character '0xa3'
    不认识的字符'0xa3'。(一般是汉字或中文标点符号)

  5、error C2057: expected constant expression
    希望是常量表达式。(一般出现在switch语句的case分支中)

  6、error C2065: 'IDD_MYDIALOG' : undeclared identifier
    “IDD_MYDIALOG”:未声明过的标识符。

  7、error C2082: redefinition of formal parameter 'bReset'
    函数参数“bReset”在函数体中重定义。

  8、error C2143: syntax error: missing ':' before '{'
    句法错误:“{”前缺少“;”。

  9、error C2146: syntax error : missing ';' before identifier 'dc'
    句法错误:在“dc”前丢了“;”。

  10、error C2196: case value '69' already used
    值69已经用过。(一般出现在switch语句的case分支中)

  11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'
    成员函数“OnTimer”没有在“CHelloView”中声明。

  12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'
    重载的函数“void reset(int)”在类“B”中找不到。

  13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention
    类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。

  14、error C2660: 'SetTimer' : function does not take 2 parameters
    “SetTimer”函数不传递2个参数。

  15、warning C4035: 'f……': no return value
    “f……”的return语句没有返回值。

  16、warning C4553: '= =' : operator has no effect; did you intend '='?
    没有效果的运算符“= =”;是否改为“=”?

  17、warning C4700: local variable 'bReset' used without having been initialized
    局部变量“bReset”没有初始化就使用。

  18、error C4716: 'CMyApp::InitInstance' : must return a value
    “CMyApp::InitInstance”函数必须返回一个值。

  19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing
    连接错误:不能打开P1.exe文件,以改写内容。(一般是P1.Exe还在运行,未关闭)

  20、error LNK2001: unresolved external symbol "public: virtual _ _thiscall C……::~C……(void)"

精彩图集

赞助商链接