link.exe返回错误LNK1181:无法打开输入文件'C:\ Program.obj'

时间:2015-06-18 08:37:54

标签: c++ windows visual-c++ linker linker-errors

我正在使用包含

的批处理文件进行编译
@echo off

set link=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link

"%link%" external_input.obj periodic_dinger.obj flagger.obj monitor.obj main.obj libGui.lib libCore.lib libCint.lib libRIO.lib libNet.lib libHist.lib libGraf.lib libGraf3D.lib libGpad.lib libTree.lib libRint.lib libPostscript.lib libMatrix.lib libPhysics.lib libMathCore.lib libThread.lib

所有对象和库都在同一目录中,这是我正在执行批处理文件的目录,以及批处理文件所在的目录。我已经尝试将当前目录添加到/LIBPATH:,但没有运气。我的LIB环境变量是

C:\Users\jroth\Data\online_monitor_v.0.5>echo %LIB%
"C:\Program Files\ (x86)\Microsoft Visual Studio 11.0\VC\LIB";"C:\Program Files
(x86)\Microsoft Visual Studio 11.0\VC\ATLMFC\LIB";"C:\Program Files (x86)\Window
s Kits\8.0\lib\win8\um\x86";

我确保所有内容都被引用。一切都没有引用,同样的错误出现了。错误是逐字的

C:\Users\jroth\Data\online_monitor_v.0.5>make
Microsoft (R) Incremental Linker Version 11.00.50727.1
Copyright (C) Microsoft Corporation.  All rights reserved.

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link
LINK : fatal error LNK1181: cannot open input file 'C:\Program.obj'

make.bat是我用来链接它的批处理文件的名称,而不是makefile。

在执行任何此操作之前,我正在运行vcvarsall.bat

1 个答案:

答案 0 :(得分:3)

问题在于您使用的环境变量link。 MS链接器也将此变量用于标志。

来自https://msdn.microsoft.com/en-us/library/6y6t9esh.aspx

  

LINK工具使用以下环境变量:

     
      
  • LINK,如果已定义。在处理命令行之前,LINK工具处理LINK环境变量中定义的选项和参数。
  •   

因此,您无法使用set link=...,您必须使用其他名称。 _link会很好。