Mkbundle产生非功能控制台exe



我可以成功地从我的MonoDevelop c#项目中构建一个捆绑的exe,但是当我运行捆绑包时,它不做任何事情;执行将立即以静默方式终止。我做错了什么?

我在64位Windows 7上使用Mono 2.10.5与cygwin通常遵循这些说明,但有这些修改。我遵循的具体步骤是:

  1. 在MonoDevelop中创建新的c#控制台项目(只包含Console.WriteLine ("Hello World!");)
  2. 将目标更改为Release
  3. 构建所有
  4. In cygwin: mkbundle -c -o host.c -oo bundle.o --deps BundleTest.exe
  5. 编辑host.c, #include <windows.h>#endif后添加#undef _WIN32
  6. In cygwin: gcc -mno-cygwin -o test.exe -Wall host.c 'pkg-config --cflags --libs mono-2|dos2unix' bundle.o
  7. 在命令提示符中:test.exe 在命令提示符中:BundleTest.exe

在步骤7中,文本"Hello World!"按预期在命令提示符中打印出来。在步骤8中,命令提示符中没有打印任何内容;输入rem并按enter键也可以得到完全相同的响应。

编辑:其他人编辑了这个问题来切换步骤7和8,这实质上改变了观察到的行为的描述。我不知道他们为什么觉得这样做是合理的,因为他们不是观察的人,但这与我思考这个问题的时间相去甚远,我不想只是切换回他们的方式。因此,请注意,编辑前的最后一段可能不再准确反映我最初的观察。

对于构建控制台应用程序,您应该从/lib/pkgconfig/mono-2.pc中删除-mwindows标志

最新更新