【问题标题】:expanded command line too long扩展命令行太长
【发布时间】:2012-02-18 21:57:04
【问题描述】:

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

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

【问题讨论】:

    标签: c++ linker nmake


    【解决方案1】:

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

    寻找“内联文件”,例如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 命令行,但是 &lt;&lt; 标记对告诉 nmake 将选项写入文件(并且它们被该文件的名称替换),然后 @ 告诉链接从该文件中读取参数。

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

    【讨论】:

    【解决方案2】:

    对于工具中的固定命令行长度,您无能为力。您可能想尝试将您的目标文件组合到几个库中,然后执行最终链接并将这些库链接在一起。这将在您的 Makefile 中引入另一个步骤,但会绕过命令行太长的错误。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-10
        • 2018-11-25
        • 2011-09-16
        • 1970-01-01
        • 2017-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多