link了几个自己的lib后成这样了。
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification
LIBC.lib(crt0dat.obj) : warning LNK4006: __cinit already defined in libcmt.lib(crt0dat.obj); second definition ignoredLINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library
Release/a.exe : warning LNK4088: image being generated due to /FORCE option; image may not run
LIBC.LIB和libcmt.lib不都是VC自己的吗?

解决方案 »

  1.   

    Libc.lib和limcnt并不兼容,LNK4098是指你链接的库不兼容,比如libc.lib是单线程库,libcmt.lib是多线程安全的库,两者并不兼容,你应该使用同一种C库
      

  2.   

    LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification修改 Project Settings, 添加 Link Incrementally(Link) 或者去掉 Program Database for Edit and Continue(C/C++)LIBC.lib(crt0dat.obj) : warning LNK4006: __cinit already defined in libcmt.lib(crt0dat.obj); second definition ignoredLIBC.lib 是 libcmt.lib 的单线程版本, 所以 LIBC.lib 里面已经包含了 libcmt.lib 的内容,应该添加:
    #pragma comment(link, "/NODEFAULTLIB:LIBC.lib")
    或者检查一下编译的 /MT(/MTd) 标志是不是和 /ML(/MLd) 标志冲突了。
      

  3.   

    to GunRoses():是你说的原因。但是该怎么解决呢?MFC程序,默认的应该是用多线程的库吧?但是我用到的是别人的lib,他中间调用了libc.lib.
    to In355Hz:
    1)我最早的错误是LIBC.lib(crt0dat.obj) : error LNK2005: __cinit already defined in libcmt.lib(crt0dat.obj);
    是error,程序编译不过。问题原因同GunRoses说的一样。
    加上#pragma comment(linker,"/FORCE:MULTIPLE")后,编译通过了。
    error变成warning了。
    LIBC.lib(crt0dat.obj) : warning LNK4006: __cinit already defined in libcmt.lib(crt0dat.obj); second definition ignored**加上#pragma comment(linker, "/NODEFAULTLIB:LIBC.lib")
    不行,因为我调用的lib中有用到LIBC.lib中的定义,例如_errno
    2)LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification**修改 Project Settings, 添加 Link Incrementally(Link)后
    这个提示没了,但是多了个
    Release/Znykt.exe : warning LNK4071: cannot be incrementally linked on subsequent links笨笨的问:去掉 Program Database for Edit and Continue(C/C++)
    在哪里去掉啊?请继续帮忙!
      

  4.   

    How about the running result ?
      

  5.   

    程序可以运行,不过编译的时候,总是有2x个warning,看了很不爽。
    但是很奇怪。Debug版本不能达到预期的效果,Release可以。不知道和这有没有关系。还是说,和我链接的lib有关。
      

  6.   

    你自己的 lib 是否是用 /ML or /MLd 选项编译的?这种情况下连接的库是 libc.lib你的程序应该是在 /MT or /MTd 选项下编译的。在这种情况下将连接 libcmt.lib, 如果 lib 连结了 libc.lib,就会冲突(libcmt.lib,libc.lib是同一 C 运行库的不同版本), 你重新编译一下自己的 lib ,把 /ML(d) 改为 /MT(d) 应该就解决了。
      

  7.   

    非常感谢In355Hz,以后请多多指教。
      

  8.   

    非常感谢In355Hz,以后请多多指教。