windows - mkbundle 生成非功能性控制台 exe

标签 windows mono mkbundle

我可以从我的 MonoDevelop C# 项目成功构建一个捆绑的 exe,但是当我运行 bundle 时,它什么也没做;执行会立即安静地终止。我做错了什么?

我在 64 位 Windows 7 上使用 Mono 2.10.5,cygwin 通常遵循 these instructions , 但带有 these modifications .我遵循的确切步骤是:

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

在第 7 步中,文本“Hello World!”按预期打印在命令提示符中。在第8步中,命令提示符中没有打印任何内容;键入 rem 并按回车键可以得到完全相同的响应。

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

最佳答案

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

关于windows - mkbundle 生成非功能性控制台 exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7507944/

相关文章:

php - 可扩展性和容错服务器。怎么办呢?

c# - 如何在 Xamarin 中正确更新 Gtk#?

c# - Linux 上的单声道 : mkbundle does not find shared libraries

c# - 如何使 "mkbundle --deps"选项与单声道 3.2.3 一起使用

macos - OSX 上的单声道 mkbundle

windows - 如何阻止在 Windows 应用商店应用程序中将文本粘贴到文本框中?

windows - 如何在批处理脚本中找到应用程序的完整路径

mono - PCL 项目中的非对称密码学

windows - 通过命令行设置应用程序的窗口位置

windows - 用于测试 TASKKILL 错误级别的语法