您的位置:首页 > 其它

调试程序出现的问题

2009-01-06 11:20 267 查看
最近在调试程序的时候出现了很多问题,现总结问题如下

1:出现最多的是error LNK2001: unresolved external symbol "void __cdecl ErrDisplay(class CString &)" (?ErrDisplay@@YAXAAVCString@@@Z)等等之类的,这个是编译成功了,连接的时候没有找到这个函数名,可能的问题就是一个是c语言或者其他语音编写的库文件,而当前工程为c++编译器,就会出现这样的情况。

2:另一个问题是定义了一个类,但是类的成员函数不小心被注释掉了,造成连接错误

3:另一个问题是LNK4098: defaultlib "LIBCMT" conflicts with use of other libs;是由于各个库的设置不一致引起的,一般在project-setting-c++-code 里面设置一致。

4:再一个是error LNK2001: unresolved external symbol __endthreadex,把线程里面的设置为多线程就可以了。

5:再一个是mkl_c.lib : warning LNK4003: invalid library format; library ignored,error LNK2001: unresolved external symbol "void __cdecl dgemv(char const *,int const *,int const *,double const *,double const *,int const *,double const *,int const *,double const *,double *,int const *)" (?dgemv@@YAXPBDPBH1PBN21212PAN1@Z),开始以为是因为第一句话mkl_c.lib被忽略了而引起的,事实上不是这个原因,是因为dgemv为c编译的,而这里用的是c++编译器,下面同第一个问题。

6:error LNK2001: unresolved external symbol "void * __cdecl operator new(unsigned int)" (??2 at YAPAXI@Z)这样的错误属于系统错误,解决方法:

1、Configuration Properties -> Linker -> Input -> Igonre Specific Library 里追加以下两个lib
  Nafxcwd.lib Libcmtd.lib

2、Configuration Properties -> Linker -> Command Line -> Addtional Option 从新追加这两个lib

  Nafxcw.lib Libcmt.lib
等类似与这样的错误,花了我不少时间,以后主意点。

7:error LNK2019: 无法解析的外部符号 "void __cdecl ErrDisp(class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > > &)" (?ErrDisp@@YAXAAV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z),该符号在函数 _main 中被引用

这个问题很奇怪,主要是在静态库函数中用到了CString这个类,而调用的时候就出现了上面的问题,在网上查了很多资料都不管用,看了微软的技术支持说加入CString的导入模板就可以了,害有的说加入cstring.h或者atlstr.h就可以了,但是我都试了还是解决不了问题,最后害的我把所有的CString都转化为char*,其实解决这个问题的方法是属性->配置属性->常规->MFC的使用把这项改为“使用标准 Windows 库”,然后重新编译就可以了。补充:我在vc6下面编译没有出现这个问题,在vs2005下面编译就出现了这个问题,于是认为是由于参数设置的问题,所以就试了很多,最后解决了问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐