我是靠谱客的博主 调皮水杯,最近开发中收集的这篇文章主要介绍VC中常见错误,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、调试时出现LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main错误;

原因:需要MFC支持的程序需要用win32 Application来生成,如果用win32的控制台程序就会出现上面的错误信息。

2、error C2018: unknown character '0xa1' 出现的原因是输入了不可见的非法字符,把那一行前后的代码删掉重写一遍就OK,复制没有用的,一定要重新输入

3、 error C2018: unknown character '0xa3'与error C2018: unknown character '0xbb'常常同时出现,这说明报错的行有中文字符或标点

4、fatal error C1051: program database file, "c:symbian6.1series60epoc32 eleasewinsudebzsystemapps itmapsprite itmapsprite.pdb", has an obsolete format, delete it and recompile 之类的信息。 不必在意重新在vc 6中rebuild就可以了

5、  d:/program   files/microsoft   visual   studio/vc98/include/ios.h(146)   :   error   C2872:   'streambuf'   :   ambiguous   symbol 
  d:/program   files/microsoft   visual   studio/vc98/include/ios.h(159)   :   error   C2872:   'ostream'   :   ambiguous   symbol 
  d:/program   files/microsoft   visual   studio/vc98/include/ios.h(159)   :   error   C2872:   'ostream'   :   ambiguous   symbol 
  d:/program   files/microsoft   visual   studio/vc98/include/ios.h(160)   :   error   C2872:   'ostream'   :   ambiguous   symbol 
  d:/program   files/microsoft   visual   studio/vc98/include/ios.h(180)   :   error   C2872:   'streambuf'   :   ambiguous   symbol 
  d:/program   files/microsoft   visual   studio/vc98/include/ios.h(207)   :   error   C2872:   'streambuf'   :   ambiguous   symbol 

是不是   新流   旧流   混用了 
  就是   #incldue   <iostream>   同时   #incldue   <iostream.h> 
  并且   还   using   namespace   std;  

6。在MFC扩展DLL中导出一个以另一个DLL导出类为几类的类(sigh!)连接时报错:error LNK2001

问题
有两个DLL:Dll_1和Dll_2。其中Dll_1中有一导出类CParent且类中用MESSAGE_MAP声明了消息响应函数;DLL_2中有一导出类CChild继承了Dll_1中的Parent类且 Dll2中同样用MESSAGE_MAP宏声明了消息响应函数。编译DLL_2时即出现错误提示:
error   LNK2001:   unresolved   external   symbol   "protected:   static   struct   AFX_MSGMAP   const   CParent::messageMap"   (?messageMap@CParent@@1UAFX_MSGMAP@@B)
..BIN/TestDll2.dll   :   fatal   error   LNK1120:   1   unresolved   externals 

解决办法
因为试图导入基类的那个Dll也要导出类,而inlude导出类的h后,AFX_EXT_CLASS被展开成_declspec(dllexport),所以出现没有导入的错误.
按照   Phourm   的方法copy   .h文件后直接把宏写成_declspec(dllimport)还是不行,是因为那个.h还要继续导入类,而那些应该导入的类没有定义_declspec(dllimport).
所以向要导出class的Dll1中导入另一个class的Dll2的方法是:
先临时define   AFX_EXT_CLASS为AFX_CLASS_IMPORT,   再include导入类(dll2)的h文件(这时AFX_EXT_CLASS被展开成_declspec(dllimport)而不是 _declspec(dllexport)),include语句后马上重新定义AFX_EXT_CLASS   为AFX_CLASS_EXPORT,这样dll2的导出类的宏可以正常展开成_declspec(dllexport).

#define AFX_EXT_CLASS AFX_CLASS_IMPORT
#include <jodie/com/kr/MFCUI/PropertyList.h>
#define AFX_EXT_CLASS AFX_CLASS_EXPORT

7。
Microsoft OLE DB Provider for SQL Server 错误 '80040e21'
多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。


引起这个问题的原因简单的说就是数据库的字段类型不匹配或者字符个数超出了数据库的字段的最大限制个数。

例如自动编号字段的就不应该指定值;限制50个字符的字段你就不应该提交多于50个字符的字符串。

最后

以上就是调皮水杯为你收集整理的VC中常见错误的全部内容,希望文章能够帮你解决VC中常见错误所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部