LINK : fatal error LNK1104: 无法打开文件“C:/XXX.obj”

  • Post author:
  • Post category:其他

问题:

 

LINK : fatal error LNK1104: 无法打开文件“C:/XXX.obj”

 

    遇到这样的问题时可以先看一下LINK命令行,项目->属性->链接器->命令行,在这里,前面设置的“附加依赖项”可能被IDE改写了,例如,要加入一个XXX.lib的链接库,完整路径为”C:/Program Files/XXX.lib”,如果被IDE改写的话会变成”C:/Program” “Files/XXX.lib” ,相应的命令行会变成Link (…) “C:/Program” “Files/XXX.lib” ,那么链接器会要求提供”C:/Program.obj”文件,由于该文件不存在,所以会返回上面的调试信息LINK : fatal error LNK1104: 无法打开文件“C:/XXX.obj”。


在setting 的配置页面上,默认的分隔符是空格:” “,也有逗号。所以如果路径中有空格可能被编译系统截断因而出现了C:/Program.obj打不开等等。貌似加全路径的最好用双引号引起来,但是我的存在空格的路径用引号引起来依旧有误。希望可以找到更好的方法。


据我的测试,setting中的Link的Object/library module先载入,additional library  path后再入,且有些库文件写在additional library  path并不起作用。猜想可能是这个解释:1.如果编译时使用的是/NOD(/NODEFAULTLIB)选项,程序所需要的运行库和MFC库在连接时由编译器写入目标文件模块,   但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。在这种情况下使用/NOD将导致错误LNK2001。


=============================备注===================================

附加链接库包含

VC6.0中:

VC6.0默认lib包含路径:Tools→Options→Directories→Library files

对于特定项目的头文件包含,可以通过以下两步添加附加链接库:

1. 在“Project Setting→Link(Category:Input)→Additional library path”处添加附加库目录,相对目录参考*.dsp文件。

目录路径不需添加双引号,路径分隔符为’/’或’/’,不必考虑反斜杠’/’的转义。多个路径之间以逗号分隔。

相应的将会在“Project Setting→Link→Project Options”处同步“/libpath”库包含命令。

2. 在“Project Setting→Link(Category:General)→Object/Library Modules” 处添加库文件名YourLib.lib也可在文件中使用#pragmacomment(lib,“YourLib.lib”)显式导入所依赖的静态库),多个库之间以空格分隔。

相应的将会在“Project Setting→Link→Project Options”处同步包含的库名称。


————————————————–Problem??????????????———————————

对于特定项目的头文件包含,可以通过以下两步添加附加链接库:

1. “Project Setting à Link  Category  Input  à Additional library path”

2.  “Project Setting à Link  Category  General  à Object/Library Modules”两个的具体区别是什么,现在执行的项目把这写库加到”Additional library path“,是毫无效果,但是加到“Object/Library Modules”就可以了,谁可以解答我的问题。而且这些lib并不是我自己写的,而是SDK中的。


版权声明:本文为vlily原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。