mkbundle выдает неработающий консольный exe
Я могу успешно собрать пакет exe из моего проекта MonoDevelop C#, но когда я запускаю пакет, он ничего не делает; казнь прекращается немедленно и молча. Что я делаю неправильно?
Я использую Mono 2.10.5 на 64-битной Windows 7 с Cygwin, как правило, следуя этим инструкциям, но с этими модификациями. Точные шаги, которые я выполняю:
- Создайте новый консольный проект C# в MonoDevelop (содержит только
Console.WriteLine ("Hello World!");
) - Изменить цель на Релиз
- Построить все
- В Cygwin:
mkbundle -c -o host.c -oo bundle.o --deps BundleTest.exe
- Отредактируйте host.c, добавьте
#undef _WIN32
после#endif
после#include <windows.h>
- В Cygwin:
gcc -mno-cygwin -o test.exe -Wall host.c 'pkg-config --cflags --libs mono-2|dos2unix' bundle.o
- В командной строке:
test.exe
- В командной строке:
BundleTest.exe
На шаге 7 текст "Привет, мир!" выводится в командной строке, как и ожидалось. На шаге 8 ничего не печатается в командной строке; точно такой же ответ можно получить, набрав rem и нажав ввод.
РЕДАКТИРОВАТЬ: Кто-то еще отредактировал этот вопрос, чтобы переключить шаги 7 и 8, что существенно меняет описание наблюдаемого поведения. Я не знаю, почему они чувствовали себя оправданными в этом, так как они не были теми, кто делал наблюдения, но это так далеко от того времени, когда я думал об этой проблеме, что я не хочу просто возвращаться назад они были. Итак, обратите внимание, что последний абзац перед этим редактированием, вероятно, более точно не отражает мои первоначальные наблюдения.
1 ответ
Для построения консольного приложения вы должны удалить флаги -mwindows из /lib/pkgconfig/mono-2.pc