моно окна mkbundle - PullRequest
       20

моно окна mkbundle

0 голосов
/ 22 декабря 2009

Я использовал mono mkbundle на cygwin, чтобы скомпилировать приложение dot net, и оно отлично работает. Я использовал инструкции отсюда c # cywgwin mono mkbundle windows 7 - не могу скомпилировать файл

Готовое приложение не запустится, если следующие файлы (скопированные из папки mono / bin) не находятся в той же папке, что и приложение: mono.dll, libglib-2.0-0.dll, libgthread-2.0-0.dll , zlib.dll

Все это выглядит нормально - однако, если я запускаю команду (из cygwin)

$ objdump -p mycompiledapp.exe | grep "DLL Name"
(где «mycompiledapp.exe» - это имя приложения)

Файлы mono.dll, libglib-2.0-0.dll, libgthread-2.0-0.dll уже встроены в мое приложение.

Почему эти файлы должны находиться в той же папке, что и мое приложение, чтобы они функционировали, если они уже встроены в мое приложение?

Что-то неправильно сделал при компиляции?

Есть ли способ либо:
а) Не вставлять эти сборки в мое приложение (чтобы они могли распространяться вместе с ним)
б) Скомпилировать мое приложение, чтобы оно знало, что эти сборки встроены в приложение, и использовать их? (и не нужно распространять эти файлы с приложением)

Просто кажется, что распространять эти файлы с моим приложением - это боль, когда они уже встроены в него! (Особенно с учетом размера этих сборок - приложение с сетью в 50 тыс. Точек становится примерно 5 мегабайтами как скомпилированное моно-приложение, и для его работы необходимо распределить 4 дополнительных мегабайта сборок ... e)

Спасибо за любую информацию,

Кузница

1 Ответ

1 голос
/ 22 декабря 2009

Вы можете добавить - статический флаг при запуске mkbundle . Обратите внимание, что это будет встроить библиотеку Mono (mono.dll), которая является LGPL. Что касается libglib и libgthread, вы должны найти их статическую версию и использовать ее при компоновке. Обратите внимание, что встраивание библиотек LGPL в вашу программу будет иметь другие последствия .

...