Инструменту Mono mkbundle не удалось создать двоичный файл с жалобой на то, что выходной файл недоступен
-
05-09-2019 - |
Вопрос
В соответствии с предложениями от этот поток при запуске приложений на C # без .NET я скомпилировал свое приложение, используя mono.Я создал оригинальное приложение, используя последнюю версию Visual C # .NET Express.Он отлично работает на .NET в Windows.Затем я открыл Cygwin и перешел к своему исходному коду, где я снова скомпилировал проект в mono, используя следующую команду:
$ mcs <myProjectHere>.cs
В результате получается MyProject.exe, который может быть успешно запущен из Cygwin и может быть успешно запущен из командной строки Window.Используемые команды являются:
$ 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, используя его (хотя я предполагал, что должен быть открыт для любого количества проблем ...).
Кто-нибудь когда-нибудь сталкивался с чем-нибудь подобным?Я в тупике...
Решение
Похоже, что он пытается вывести в MyProject.exe
, который совпадает с входным файлом.
Попробуй бежать
$ mkbundle -o ProgramOutput Program.exe --deps
Кстати, это всего лишь предположение, поскольку я не знаю mkbundle
.