1

MonoDevelop3.0.2で簡単なアプリバンドルを作成しようとしています。

新しいソリューションを作成します。MonoMacプロジェクトを空にします。System.Windows.Formsへの参照を追加します。次のコードで新しいクラスを作成します。

using System;
using System.Windows.Forms;

namespace MM2
{
    public class Program
    {
        public static void Main()
        {
            MessageBox.Show ("Hello world");
        }
    }
}

これはMonoDevelopから完全に実行されます。次に、 [プロジェクトオプション]ダイアログボックスで、[ MacOSXパッケージ]画面を選択します。アプリケーションバンドルにMonoランタイムを含めるをチェックします。他のオプションはデフォルトのままにします(プラットフォームはX86です)。

[ビルド/すべてビルド]を選択してバンドルをビルドします。これにより、bin/DebugフォルダーにMM.appバンドルが作成されます。

パッケージャはlibgdiplus.dylibをバンドルにコピーしなかったので、これを手動で行う必要があります。(この手順がないと、アプリを起動できず、コンソールログにMonoがlibgdiplusを見つけられなかったことが明確に示されます)。ファイルlibgdiplus.0.dylibとリンクlibgdiplus.dylibを/Library/Frameworks/Mono.framework/LibrariesフォルダーからアプリバンドルのContents/Resourcesフォルダーにコピーしました。

これで、アプリバンドルは自己完結型になり、Monoランタイムをインストールする必要がなくなりました。実行中は、メッセージボックスが表示されます。しかし、[OK]ボタンをクリックしてプログラムをシャットダウンすると、Monoランタイムがクラッシュします。これは、コンソールログからのスタックトレースです。

Native stacktrace:
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2:    0   MM2                                                 0x000a072f mono_handle_native_sigsegv + 287
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2:    1   MM2                                 0x000058de mono_sigsegv_signal_handler + 334
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2:    2   libsystem_c.dylib                   0x9435859b _sigtramp + 43
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2:    3   ???                                 0xffffffff 0x0 + 4294967295
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2:    4   CoreFoundation                      0x940e4e05 _CFAutoreleasePoolPop + 53
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2:    5   Foundation                          0x9386ea2f -[NSAutoreleasePool release] + 131
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2:    6   MM2                                 0x00002b52 main + 1458
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2:    7   MM2                                 0x00002555 start + 53
4

1 に答える 1