用了/NODEFAULTLIB仍报警告LNK4098

meijing 2005-07-18 05:53:40
因为使用了STLport,所以编译console project的时候用了debug版的动态链接库。结果报LNK4098的错。于是查msdn后在project sttings中加入了“/NODEFAULTLIB:libcmt.lib,libc.lib,msvcrt.lib,libcd.lib,msvcrtd.lib ”
之后在导出的makefile中也确实见到了这句话,可是仍然报
warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library

这是为什么?
...全文
235 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qrlvls 2005-07-22
  • 打赏
  • 举报
回复
错了,应该是屏蔽
libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
qrlvls 2005-07-22
  • 打赏
  • 举报
回复
你的工程是否是如下配置:
Win32 Release
Use MFC in static library
此时 /NODEFAULT 屏蔽:
libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
oyljerry 2005-07-22
  • 打赏
  • 举报
回复
到Project->Settings->选C++那一页->把catagory改成Code Generation->Runtime Liberay,改成链接多线程DLL库。用debug版还是Release版视你当前的配置而定。然后你可以看到下方的编译选项里原先有一个/Td开关会变,一般都是变成/MTd(DEBUG设置)和/MT(RELEASE设置)
meijing 2005-07-22
  • 打赏
  • 举报
回复
MSDN说这几个库都不应该用
我也确实用/nodefaultlib:....屏蔽了

应该和stlport无关
oyljerry 2005-07-19
  • 打赏
  • 举报
回复
stlport应该一些帮助文档的吧
直接选择这几个运行库,试一下,看哪种可以
meijing 2005-07-19
  • 打赏
  • 举报
回复
对不起,刚才搞错了,下面的设置也无效
nodefaultlib:libcmt.lib(crt0.obj),libc.lib,msvcrt.lib,libcd.lib,msvcrtd.lib

我是 win2000 pro sp4(或sp3?), VC6 sp6, stlport 4.6.2
meijing 2005-07-19
  • 打赏
  • 举报
回复
谢谢,下面的设置有效
/nodefaultlib:libcmt.lib(crt0.obj),libc.lib,msvcrt.lib,libcd.lib,msvcrtd.lib
但,
我也是根据你提到的msdn文档加的/nodefaultlib,我用的是debug multithreaded,
根据msdn我的设定与你的唯一区别就是少了(crt0.obj),为什么加这个东西就行了?
msdn为什么没提到
qrlvls 2005-07-18
  • 打赏
  • 举报
回复
忽略哪些库与你是否多线程及是否Debug版本相差:
参考:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/lnk4098.asp

To use this run-time library Ignore these libraries
Single-threaded (libc.lib) libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Multithreaded (libcmt.lib) libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Multithreaded using DLL (msvcrt.lib) libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Debug Single-threaded (libcd.lib) libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib
Debug Multithreaded (libcmtd.lib) libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, msvcrtd.lib
Debug Multithreaded using DLL (msvcrtd.lib) libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib
qrlvls 2005-07-18
  • 打赏
  • 举报
回复
也可能是因为仅仅忽略了 libcmt.lib 而没有忽略 libcmtd.lib
你可以再尝试一下使用:
/NODEFAULTLIB:libcmt.lib,libcmtd.lib,libc.lib,msvcrt.lib,libcd.lib,msvcrtd.lib
需要注意是否屏蔽了相应CRT库的Debug版本
qrlvls 2005-07-18
  • 打赏
  • 举报
回复
/nodefaultlib:libcmt.lib(crt0.obj),libc.lib,msvcrt.lib,libcd.lib,msvcrtd.lib

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧