根据this thread关于运行C#应用程序的建议sans .NET我使用mono编译了我的应用程序。我使用最新的Visual C#.NET Express Edition构建了原始应用程序。它在Windows上的.NET上运行良好。然后我打开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工具链已安装且状况良好,因为我最近能够使用它在eclipse中成功编译了一些c ++应用程序(虽然我认为我应该对任何问题开放... )。
有人碰到过这样的事吗?我很难过......
答案 0 :(得分:5)
似乎它正在尝试输出到MyProject.exe
,这与输入文件相同。
尝试运行
$ mkbundle -o ProgramOutput Program.exe --deps
顺便说一下,这只是猜测,因为我不知道mkbundle
。