方法一: 用VSDNET2005重新编译某个工程的发生了链接错误 现在把这个解决过程分享一下。 错误如下:fatal error LNK1104: 无法打开文件“LIBC.lib” 。 解决如下:项目->属性中->配置属性->链接器->输入->在忽略特定库中写入打不开的文 件的名称LIBC.lib;
方法二: 在stdafx.h 里加上这句吧 #pragma comment (linker,"/NODEFAULTLIB:libc.lib")
方法三: 下一个libc.lib,或者把VC6.0中的包含进来
方法四: 错误提示: LINK : fatal error LNK1104: 无法打开文件“LIBC.lib” 查了一下资料: LIBC.LIB Single-threaded, static link /ML LIBCMT.LIB Multithreaded, static link /MT _MT MSVCRT.LIB Multithreaded, dynamic link (import library for MSVCR71.DLL). 下面提供两种解决方案,请根据实际情况选择: 方法一: “项目属性” -> “配置属性” -> “C/C++” -> “代码生成”中的“运行时库”,设置成“/MT (static link )” 方法二: “项目属性” -> “配置属性” -> “链接器” -> “输入”中的“所有默认库”,设置成“/NODEFAULTLIB (static link )” ---------------------------------------------------------------------
方法五: 五一来了,公司放假了,生活的乏味,我竟然选择了五一去公司加班, 看着满大街的人流 真的是觉得自己已经老了, 闲话少说了,前两天sb 导论老师实在怕我闲着让我总结一下开源库egg的在vc下的使用方法,昨天没事自己试了一下,在vc6下十分简单 因为是静态库只要简单的包含头文件 并且在vc++目录中添加搜索路径 即可 (当然要有lib和.h文件) 但在2005下问题就有了 因为原来egg库是vc早期版本生成的库 在链接过程中 由于是控制台程序所以默认是调用单线程的静态库 LIBCD.lib(debug版本)和LIBC.lib(release) 故会出现打不开LIBCD.lib的错误 显示:fatal error LNK1104: 无法打开文件“LIBC.lib” 用原先的方法将vc6的库函数和头文件覆盖2005后会显示LIBCD和现有文件冲突,未找到外部解析文件等,可见导入库行不通. 这时的解决方法很简单 只要在项目属性中的链接器栏中在忽略特定库中写入打不开的文件的名称 入本例中的LIBCD.lib 在完全编译就好了; 这时我们就要看看 很烦人的所谓的单线程静态库,多线程库了, 这些库文件是微软的运行时刻库作用是在生成完obj文件后链接过程中初始化全局变量,导入项目入口函数,获取系统信息等等,原先的vc'老版本 还有就是多线程程序的支持,老版本的win32函数有creatthread,新的使用LIbCMT.lib的有beginthreat, 这些运行时库对应有 LIBCD.lib LIBC.lib 静态单线程库(后面加d表示DEBUG版) /ML LIBCMT.lib LIBCMTD.lib 对应的是静态多线程库/MT MSVCRT.lib 动态链接库 /MD 最后一个
本人的解决方法:我产生这个错误的原因是由于vs2005的工程中,我所使用的静态库是在VC6.0编译的。要解决这个错误,使用VS2005重新编译生成静态库代替原来的静态库即可。