在使用stlport(需要多线程支持),然后就会看到
编译器报以下的警告:
LINK : warning LNK4098: defaultlib "LIBCMTD" conflicts with use of other libs; use /NODEFAULTLIB:library另外,在此情况下,使用zlib,就会报如_exit、_free等已经在xxx.obj中定义了,然后链接错误:~~~(请各位大侠帮帮忙,讲解一下!!!如果避免或解决。

解决方案 »

  1.   

    LINK : warning LNK4098: defaultlib "LIBCMTD" conflicts with use of other libs; use /NODEFAULTLIB:library
    默认的连接库和其他已经使用的连接库有冲突
    你换掉看看,
    在说,是警告,也不是错误
      

  2.   

    我说漏了一点
    有时MFC和其他库如stlport一起用,因为都用了多线程,就会报以下的错误:Linking...
    libc.lib(crt0dat.obj) : error LNK2005: _exit already defined in msvcrtd.lib(MSVCRTD.dll)
    libc.lib(crt0dat.obj) : error LNK2005: __exit already defined in msvcrtd.lib(MSVCRTD.dll)
    libc.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in msvcrtd.lib(cinitexe.obj)
    libc.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in msvcrtd.lib(cinitexe.obj)
    libc.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in msvcrtd.lib(cinitexe.obj)
    libc.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in msvcrtd.lib(cinitexe.obj)
    msvcrtd.lib(MSVCRTD.dll) : error LNK2005: __setmbcp already defined in libc.lib(mbctype.obj)
    LINK : warning LNK4098: defaultlib "msvcrtd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
    LINK : warning LNK4098: defaultlib "LIBCMTD" conflicts with use of other libs; use /NODEFAULTLIB:library
    msvcrtd.lib(cinitexe.obj) : warning LNK4098: defaultlib "libc.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
    libc.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    p:\setup.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.setup.exe - 9 error(s), 3 warning(s)
    这个时候怎么办?
      

  3.   

    在project settings的link页ignore library中应该有
    libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, msvcrtd.lib
      

  4.   

    肯定是你设定的链接库不对,例如是几个Project,有的设定未Not use MFC,有的是Using MFC in Share DLL或者是Static Dll等。只有这样才可能导致这个问题。
      

  5.   

    在project settings的link页ignore library中加入
    libc.lib, msvcrt.lib
      

  6.   

    抱歉,我太不仔细了,在project settings的link页ignore library中加入libc.lib, msvcrt.lib后,编译器又报如下的警告:LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification
    LINK : warning LNK4049: locally defined symbol "_fclose" imported
    LINK : warning LNK4049: locally defined symbol "_fread" imported
    LINK : warning LNK4049: locally defined symbol "_fopen" imported
    LINK : warning LNK4049: locally defined symbol "_strncpy" imported
    LINK : warning LNK4049: locally defined symbol "__setmbcp" imported:..........(