我可以成功地从我的MonoDevelop c#项目中构建一个捆绑的exe,但是当我运行捆绑包时,它不做任何事情;执行将立即以静默方式终止。我做错了什么?
我在64位Windows 7上使用Mono 2.10.5与cygwin通常遵循这些说明,但有这些修改。我遵循的具体步骤是:
- 在MonoDevelop中创建新的c#控制台项目(只包含
Console.WriteLine ("Hello World!");
) - 将目标更改为Release
- 构建所有
- In cygwin:
mkbundle -c -o host.c -oo bundle.o --deps BundleTest.exe
- 编辑host.c,
#include <windows.h>
后#endif
后添加#undef _WIN32
- In cygwin:
gcc -mno-cygwin -o test.exe -Wall host.c 'pkg-config --cflags --libs mono-2|dos2unix' bundle.o
在命令提示符中:
test.exe
在命令提示符中:BundleTest.exe
在步骤7中,文本"Hello World!"按预期在命令提示符中打印出来。在步骤8中,命令提示符中没有打印任何内容;输入rem并按enter键也可以得到完全相同的响应。
编辑:其他人编辑了这个问题来切换步骤7和8,这实质上改变了观察到的行为的描述。我不知道他们为什么觉得这样做是合理的,因为他们不是观察的人,但这与我思考这个问题的时间相去甚远,我不想只是切换回他们的方式。因此,请注意,编辑前的最后一段可能不再准确反映我最初的观察。
对于构建控制台应用程序,您应该从/lib/pkgconfig/mono-2.pc中删除-mwindows标志