概述
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中常见错误所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复