扩展命令行太长

时间:2012-02-18 21:57:04

标签: c++ linker nmake

我在使用MSVC9时遇到连接阶段的问题。它说:

  

NMAKE:致命错误U1095:扩展命令行link.exe。 。 。太久了

3 个答案:

答案 0 :(得分:4)

您可以让nmake将命令行参数写入文件,然后使用link选项从文件中读取参数。

查找“内联文件”,例如http://msdn.microsoft.com/en-us/library/z440c98k(v=vs.80).aspx

自从我这么做以来已经很长时间了,但我记得用法是这样的:

foo.exe : foo1.obj foo2.obj foo3.obj
    link.exe @<<
foo1.obj
foo2.obj foo3.obj
... more arguments, macros etc on one or more lines
<<
    rem other commands go here if you want

基本上你只有一个普通的nmake命令行,但是这对<<标记告诉nmake将选项写入文件(并且它们被该文件的名称替换),然后{{1告诉链接从该文件中读取参数。

KEEP选项(可能带有指定的文件名)可用于调试 - 如果链接barf,您可以查看文件以查看实际传递给它的内容。

答案 1 :(得分:1)

您可以在工具中修复固定命令行长度。您可能希望尝试将目标文件合并到几个库中,然后执行最终链接并将库链接在一起。这将在Makefile中引入另一个步骤,但会在命令行中出现太长的错误。

答案 2 :(得分:0)

大笑很糟糕,但我们需要更多信息来回答你的问题。对于初学者的操作系统,基本上,它是说调用链接器的命令行大于缓冲区允许的cmd.exe本身。如果我没记错的话,可能有一种方法可以让命令shell在命令行上使用更大的缓冲区。或者你可以将shell更改为windows powershell,看看是否可行。