Visual c++ 为什么致命错误“;LNK1104:无法打开文件';C:\Program.obj'”;在编译C++;Visual Studio中的项目?(2)

Visual c++ 为什么致命错误“;LNK1104:无法打开文件';C:\Program.obj'”;在编译C++;Visual Studio中的项目?(2),visual-c++,linker,Visual C++,Linker,这真的是一个后续的原始问题与这个标题,但我太noob被允许评论那里(你可以合并这作为一个评论迈克?) 当我将VS2010中的命令行逐字剪切粘贴到批处理文件并尝试运行它时,我花了大约一天的时间试图找出为什么会出现这个问题 我将link.exe的完整路径放在名为“link”的批处理文件的env var中,并以如下方式运行命令: “%link%”/详细。。。雅达雅达雅达 并出现错误“LNK1104:无法打开文件'C:\Program.obj'” 这是因为VS 2010 link.exe将%link%用

这真的是一个后续的原始问题与这个标题,但我太noob被允许评论那里(你可以合并这作为一个评论迈克?)

当我将VS2010中的命令行逐字剪切粘贴到批处理文件并尝试运行它时,我花了大约一天的时间试图找出为什么会出现这个问题

我将link.exe的完整路径放在名为“link”的批处理文件的env var中,并以如下方式运行命令:

“%link%”/详细。。。雅达雅达雅达

并出现错误“LNK1104:无法打开文件'C:\Program.obj'”

这是因为VS 2010 link.exe将%link%用作链接的附加输入

由于我的%link%var是程序FQN“C:\program Files\Micro$Visual Studio 10.0…”(即包含空格),链接器试图包含“C:\program”(作为第一个空格分隔的字符串),并添加了后缀“.obj”,因为它假定这就是我的意思

然后,它试图将这个虚假文件作为输入,但没有找到它,结果失败了

我本人更像一个海湾合作委员会成员,这种行为至少可以说是出人意料的


简单的解决方案是为我的命令变量使用不同的名称-例如%lcmd%

Windows引用可能是一件非常痛苦的事情,因为它不是由shell处理的,而是由单个程序处理的。您可能需要在%link%本身的定义中包含适当的引号。

Windows引号可能是一个巨大的难题,因为它不是由shell处理的,而是由单个程序处理的。您可能需要在%link%本身的定义中包含适当的引号。

当您更改项目属性中的链接器设置时,可能会发生此错误。当您修改该路径时,只需在“”(双引号)
中给出该路径,例如“c:\Program file\~”

当您更改项目属性上的链接器设置时,可能会发生此错误。当您修改该路径时,只需在“(双引号)
中给出该路径,例如“c:\Program file\~”