mkbundle выдает неработающий консольный exe - PullRequest
4 голосов
/ 22 сентября 2011

Я могу успешно собрать пакет exe из моего проекта MonoDevelop C #, но когда я запускаю пакет, он ничего не делает; казнь прекращается немедленно и молча. Что я делаю не так?

Я использую Mono 2.10.5 на 64-битной Windows 7 с Cygwin, как правило, следуя этим инструкциям , но с этими модификациями . Точные шаги, которые я выполняю:

  1. Создание нового консольного проекта C # в MonoDevelop (содержит только 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 текст «Привет, мир!» выводится в командной строке, как и ожидалось. На шаге 8 ничего не печатается в командной строке; точно такой же ответ можно получить, набрав rem и нажав ввод.

РЕДАКТИРОВАТЬ: Кто-то еще отредактировал этот вопрос, чтобы переключить шаги 7 и 8, что существенно меняет описание наблюдаемого поведения. Я не знаю, почему они чувствовали себя оправданными в этом, так как они не были теми, кто делал наблюдения, но это так далеко от того времени, когда я думал об этой проблеме, что я не хочу просто возвращаться назад они были. Итак, обратите внимание, что последний абзац перед этим редактированием, вероятно, больше не отражает мои первоначальные наблюдения.

1 Ответ

3 голосов
/ 20 октября 2011

Для построения консольного приложения вы должны удалить флаги -mwindows из /lib/pkgconfig/mono-2.pc

...