VC 编译 重复定义错误解决
来源:互联网 发布:python.exe已停止工作 编辑:程序博客网 时间:2024/05/18 12:29
MS VC6 链接错误处理
在Windows XP下编译的软件,放到Windows 2000上使用时,跳出了"无法找到动态链接库MSVCRTD.dll"的提示,后来还是直接将MSVCRTD.dll从WinXP系统目录下copy过来使用来解决问题的。
不过在解决问题过程中,有其他意外收获,现在记下来,说不定以后可参考一二。
刚开始时,我将MFC DLL改为静态库链接,编译,出现如下结果:
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _realloc already defined in libcmt.lib(realloc.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _free already defined in libcmt.lib(free.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _malloc already defined in libcmt.lib(malloc.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _strchr already defined in libcmt.lib(strchr.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _sprintf already defined in libcmt.lib(sprintf.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _tolower already defined in libcmt.lib(tolower.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _getenv already defined in libcmt.lib(getenv.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _toupper already defined in libcmt.lib(toupper.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: __isctype already defined in libcmt.lib(isctype.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _atoi already defined in libcmt.lib(atox.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _strstr already defined in libcmt.lib(strstr.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _calloc already defined in libcmt.lib(calloc.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _strncpy already defined in libcmt.lib(strncpy.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _strncmp already defined in libcmt.lib(strncmp.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _memmove already defined in libcmt.lib(memmove.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _strtoul already defined in libcmt.lib(strtol.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _strtol already defined in libcmt.lib(strtol.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _fclose already defined in libcmt.lib(fclose.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _ungetc already defined in libcmt.lib(ungetc.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: __errno already defined in libcmt.lib(dosmap.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _sscanf already defined in libcmt.lib(sscanf.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _setlocale already defined in libcmt.lib(setlocal.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _printf already defined in libcmt.lib(printf.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _localtime already defined in libcmt.lib(localtim.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _time already defined in libcmt.lib(time.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _fflush already defined in libcmt.lib(fflush.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: __strdup already defined in libcmt.lib(strdup.obj)
LINK : warning LNK4098: defaultlib "MSVCRTD" conflicts with use of other libs; use /NODEFAULTLIB:library
..\..\Output\Release/FirewallMan.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
相信一个善良的人对上面的错误不会熟视无睹的,我的解决方法当然是对症下药:
Link->Category: Input->Ignore libraries:libcmt
clean后重新编译,还有下面的链接错误:
Linking...
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
nafxcw.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(dcprev.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype
..\..\Output\Release/FirewallMan.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.
后来尝试了很多方法,经过摸索,最后得出解决方法:
在Preprocessor中定义_AFXDLL
如果它提示:fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds
就这样改:
C/C++->Code Generation->Multithread DLL (即实现/MD选项)
- VC 编译 重复定义错误解决
- 关于VC link2005 重复定义,定义冲突的错误解决
- VC ADO ACCESS 重复定义错误解决方法
- VC编译错误: libcmt.lib 已经定义
- 定义的数据结构编译时提示重复定义错误
- (已解决!GUID的外部定义和内部定义)VC编译错误:error LNK2001: unresolved external symbol _GUID_DEVINTERFACE_USB_DEVICE
- VC编译连接错误解决札记
- 函数重复定义的编译错误,MSVCRTD.lib库和LIBCMTD.lib库重复定义函数
- 函数重复定义的编译错误,MSVCRTD.lib库和LIBCMTD.lib库重复定义函数
- 函数重复定义的编译错误,MSVCRTD.lib库和LIBCMTD.lib库重复定义函数
- 函数重复定义的编译错误,MSVCRTD.lib库和LIBCMTD.lib库重复定义函数
- 解决编译时的multiply defination重复定义问题
- 如何解决“重复定义”
- 解决VC编译错误:c1083 cannot open precompiled header file
- VC++2005编译错误fatal error C1902解决
- VC中常见的一些编译链接错误的解决
- VC中常见的一些编译链接错误的解决
- Matlab+VC混合编程的mclmcr.h重复定义错误解决方法
- 软件开发:眼前与未来
- web.xml文件详解
- 对职业生涯有帮助的10条
- ZOJ 3179 Calculate With Abacus
- RM文件格式之引导单元
- VC 编译 重复定义错误解决
- boost函数对象的妙用
- [一分钟学会系列之五]一分钟学会提取文件图标,保存为透明图片(附DEMO程序)
- Red Hat Linux Enterprise 4上安装swftools-0.9.1 版本
- shtml简介
- Windows Installer问题集结及解决办法
- flex图片上画图
- bytes allignment
- 学Flex有用的网站