我有个lib文件,我想在程序中使用他的功能
可是在Link时出现警告
LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library
我该怎么办?

解决方案 »

  1.   

    该库使用了旧版的ANSI C Runtime(指不是MSVCRT.dll),如果你的工程同时使用MSVCRT.dll,你看到的将不止是警告,而是链接错误
    你可以把相关的代码编译成一个DLL中,避免在同一个链接期内,同时接触libc.lib和MSVCRT.dll就可以忽略该警告
    我是也见过一套代码引用了libc.lib,但我怎么都无法把代码和库分离出来(不好意思!如果你有什么其它方法也请贴一下),后来我把那套代码放到了一个DLL里
      

  2.   

    libc.lib和 MSVCRT.dll都是ANSI C Runtime的代码,两者的内容是重复的
      

  3.   

    libc.lib和 MSVCRT.dll都是ANSI C Runtime的代码,两者中的函数是重复的,如果你在一次链接中同时包含了两个文件是会报错的(同一函数在不同模块内实现)最好的解决方法是改变那套代码,使它也链接到MSVCRT.dll上,你可以去试试看我也遇到过类似的情况,对于我的那套代码(是网上下下来的),我不能使它链接到MSVCRT.dll上,我后来的做法是:
    用一个DLL包装这些代码,既然DLL中ANSI C Runtime的函数未被设置为exprot,那么(虽然DLL用了libc.lib的代码)使用这个DLL的程序是不知道的使用了libc.lib的。使用这个DLL的程序就可以正确地链接到MSVCRT.dll中的ANSI C Runtime
      

  4.   

    更准确的说是:如果你在一次链接中同时包含了两个文件,并调用了ANSI C Runtime的函数,你会得到“同一函数在不同模块内实现”的链接报错提示如果你确信,在程序内无须使用CString 之类的ANSI C Runtime函数,你完全可以忽略该警告,因为libc.lib中的代码不会被加到你的程序中,这个警告对你的程序是没有什么副作用的现在写MFC的程序肯定都是用MSVCRT.dll中的ANSI C Runtime。如果下载的那套程序是为了作为标准功能代码引用的话,那把它放到单独的DLL中也就可以了