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个字符的字符串。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值