前段时间在链接自己编写好的动态库的时候,按照原先的方法,却遭遇失败的问题,提示少了什么什么.obj文件。在网上找了很多方法,试了很多,但是却都失败,感觉很不靠谱。最后在破釜沉舟的情况下,终于解决了,下面分享我解决的方法,希望可以帮到后来人。
要看一下Link命令行就知道了.
项目->属性->链接器->输入->附加依赖项.
在这里你会发现你前面设置的"附加依赖项"被IDE改写了.
例如你要加入一个ABC.lib的链接库,完整路径为"C:\Program Files\ABC.lib",
如果被IDE改写的话会变成"C:\Program"
"Files\ABC.lib"
相应的命令行变成Link (...) "C:\Program"
"Files\ABC.lib"
那么链接器会要求提供"C:\Program.obj"文件,由于该文件不存在,所以会返回上面的调试信息‘LINK : fatal error LNK1104: 无法打开文件“C:\Program.obj”‘!
这就是原因的所在:在文件夹命名的时候,文件夹名存在空格,导致编辑器将这个文件夹当做两个目录来解释了(“编译器很笨的,很多的时候,你的想法,他都不会知道的”)
解决的方法,其实也很简单。就是讲整个路径加上“”。
例如:
比如你这样设置C:\Program Files\XXX\lib\XXX.lib,表示你在项目中连接到这个XXX.lib,但是,在Program与File之间有一个空格,所以就解析成了C:\Program, 再所以,就出现了:C:\Program.obj无法打开,所以你设置的时候写成这样"C:\Program Files\XXX\lib\XXX.lib", 用"" 引号,将整个路径括起来就行了。这样编译器就不会存在二义性来解释你原先想设置的命令。