Инструмент моно mkbundle не может создать двоичный файл с жалобой на недоступность выходного файла

Согласно предложениям этого потока по запуску приложений C # sans .NET Я скомпилировал свое приложение, используя моно. Я создал исходное приложение, используя последнюю версию Visual C # .NET Express Edition. Он отлично работает на .NET под Windows. Затем я открыл Cygwin и перешел к своему источнику, где я снова скомпилировал проект в моно, используя следующую команду:

$ mcs <myProjectHere>.cs

Это создает MyProject.exe, который может быть успешно запущен из Cygwin и может быть успешно запущен из командной строки Windows. Используются следующие команды:

$ mono MyProject.exe
C:\...>mono MyProject.exe

и просто ради удовольствия, просто:

C:\...>MyProject.exe

Все работает как положено. Затем я попытался собрать моно-скомпилированный исполняемый файл в статически связанный двоичный файл с помощью команды mkbundle следующим образом:

$ mkbundle -o MyProject MyProject.exe --deps

Здесь дела идут под откос. Он запускается достаточно хорошо, а затем жалуется, что выходной файл (предположительно MyProject.exe) не может быть открыт, потому что он занят. Полный вывод всего этого находится здесь:

    $ mkbundle -o Program Program.exe --deps
    OS is: Windows
    Sources: 1 Auto-dependencies: True
       embedding: c:\Documents and Settings\bsweeney\My Documents\Visual Studio 2008
    \Projects\TestConsole\TestConsole\Program.exe
       embedding: C:\PROGRA~1\Mono-2.2\lib\mono\2.0\mscorlib.dll
    Compiling:
    as -o temp.o temp.s
    gcc -mno-cygwin -g -o Program -Wall temp.c `pkg-config --cflags --libs mono|dos2
    unix`  temp.o
    /usr/lib/gcc/i686-pc-mingw32/3.4.4/../../../../i686-pc-mingw32/bin/ld: cannot op
    en output file Program.exe: Device or resource busy
    collect2: ld returned 1 exit status
    [Fail]

Я утверждаю, что мой набор инструментов unix gcc установлен и находится в хорошем состоянии, потому что я недавно смог успешно скомпилировать несколько приложений на C ++ в eclipse, используя его (хотя я предполагал, что должен быть открыт для любого количества проблем ...).

Кто-нибудь когда-нибудь сталкивался с чем-то подобным? Я в тупике ...


person Brian Sweeney    schedule 17.02.2009    source источник


Ответы (1)


Похоже, он пытается вывести в MyProject.exe, который совпадает с входным файлом.

Попробуй бежать

$ mkbundle -o ProgramOutput Program.exe --deps

Кстати, это всего лишь предположение, поскольку я не знаю mkbundle.

person configurator    schedule 17.02.2009
comment
Это действительно сработало! Я думал, что Program и Program.exe будут двумя разными файлами, но оказалось, что cygwin или, может быть, mkbundle добавляли .exe в конец Program. - person Brian Sweeney; 18.02.2009
comment
Вау, мои экстрасенсорные способности улучшаются! Подсказкой было, кстати, сообщение «не удается открыть выходной файл Program.exe». - person configurator; 19.02.2009
comment
имеет смысл - я предположил, что это относится к программе ввода, которая на самом деле была названа Program.exe. в любом случае теперь я вижу ошибку своего пути ... спасибо! - person Brian Sweeney; 20.02.2009