调试程序出现的问题
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下面编译就出现了这个问题,于是认为是由于参数设置的问题,所以就试了很多,最后解决了问题。
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下面编译就出现了这个问题,于是认为是由于参数设置的问题,所以就试了很多,最后解决了问题。
相关文章推荐
- 【经验随笔】Java程序远程调试定位特定运行环境上出现的问题
- 关于GDB调试go语言程序中出现 os.Args无法打印的问题
- 调试时出现:“没有找到 MSVCR80D.dll,因此这个程序未能启动,重新安装应用程序,可能会修复此问题”错误提示,如何解决?
- 在eclipse中调试j2me程序出现ALERT: Attempting to resume current thread的问题
- wince下载程序到核心板调试时出现磁盘空间不足的问题
- CUDA6.5调试向量求程序时出现invalid device function这一问题的解决方案
- 调试程序时applicationContext.xml出现的问题
- 今天调试一个WebPart的简单程序出现的问题
- 解决vc++DEBUG ERROR问题前几天师弟调试程序的时候出现了这样一个错误,出错的位置是在delete [] 一个动态分配的数组时出现的。 经过调查发现错误是因为他之前在给数组赋值的时候越界了
- CCS在调试DSP程序过程中出现No source available for "0x712148" 问题
- 在VS2012中配置opencv2.4.10的步骤,及测试程序调试时,出现的各种问题
- Delphi 使用 SPcomm 调试串口程序出现总是在程序断开的时候,才发送指令的问题。
- 今天调试一个WebPart的简单程序出现的问题
- 串口调试工作程序出现问题
- QT程序出现Bus Error问题的调试
- LPC2378-Jlink 能下载程序,但是调试出现各种奇怪问题
- android 程序调试出现source not found的问题
- 程序出现问题时的调试方法
- Android程序调试时出现的两个问题
- 调试程序的时候出现的nafxcw.lib和uafxcw.lib的冲突问题