слишком длинная расширенная командная строка - PullRequest
1 голос
/ 19 февраля 2012

При работе с MSVC9 я столкнулся с проблемой на этапе компоновки. Это говорит:

NMAKE: фатальная ошибка U1095: расширенная командная строка link.exe. , , слишком длинный

Ответы [ 3 ]

4 голосов
/ 19 февраля 2012

Вы можете заставить 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, но пара << маркеровпопросите nmake записать параметры в файл (и они будут заменены именем этого файла), а затем @ сообщит ссылку для чтения аргументов из этого файла.

Опция KEEP (возможно, с указанным именем файла) может быть полезна для отладки - если ссылка barfs, вы можете посмотреть в файле, чтобы увидеть, что вы на самом деле передали ему.

1 голос
/ 19 февраля 2012

Вы ничего не можете сделать с фиксированной длиной командной строки в ваших инструментах. Вы можете попробовать объединить ваши объектные файлы в пару библиотек, а затем выполнить окончательную ссылку и связать библиотеки вместе. Это внесет еще один шаг в ваш Makefile, но обойдёт командную строку слишком длинной ошибкой.

0 голосов
/ 19 февраля 2012

LOL, это отстой, но нам нужна дополнительная информация, чтобы ответить на ваш вопрос. ОС для начинающих, в основном, говорит, что командная строка для вызова компоновщика больше, чем позволяет буфер в самом cmd.exe. Если я правильно помню, может быть способ заставить командную оболочку использовать больший буфер в командной строке. Или вы можете изменить оболочку на windows powershell и посмотреть, может ли это сработать.

...