0

cygwin で mono mkbundle を使用してドット ネット アプリをコンパイルしましたが、正常に動作します。ここからの指示を使用しました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 は既にアプリに埋め込まれています。

これらのファイルは、アプリ内に既に埋め込まれているのに、アプリが機能するためにアプリと同じフォルダーにある必要があるのはなぜですか?

コンパイル時に何か間違ったことをしましたか?

次のいずれかの方法はありますか:
a) これらのアセンブリをアプリに埋め込まない (アプリと共に配布できるようにする)
b) アプリをコンパイルして、これらのアセンブリがアプリに埋め込まれていることを認識し、それらを使用しますか? (これらのファイルをアプリで配布する必要はありません)

これらのファイルが既にアプリに埋め込まれている場合、これらのファイルをアプリで配布するのは面倒です! (特にこれらのアセンブリのサイズを考慮すると、50k ドットのネット アプリは、コンパイルされたモノアプリとして約 5 メガになります。これを機能させるには、追加の 4 メガのアセンブリと共に配布する必要があります...e)

情報をありがとう、

鍛冶屋

4

1 に答える 1

1

mkbundleの実行時に--staticフラグを追加できます。これにより、LGPL である Mono ライブラリ (mono.dll) が組み込まれることに注意してください。libglib と libgthread に関しては、それらの静的バージョンを見つけて、リンクするときにそれを使用する必要があります。プログラムに LGPL ライブラリを埋め込むと、別の意味持つことに注意してください。

于 2009-12-22T19:22:53.970 に答える