ホームページ開発ツール>REALbasic Mach-O Plugin 覚書・基礎編

 REALbasic Mach-O Plugin 覚書

基礎編

目次
 はじめに

 今まで何度かトライしては挫折していたプラグインですが、旧作をUB化するにあたって、いよいよ避けられない見通しとなってきました。

 挫折の理由としてしては、
(1) うまく動かないときに、どこ(作り方or内容)に原因かあるのか分かりずらい。
(2) 既存の(動作確認済の)サンプルをカスタマイズしようとしても、手を入れていい場所とそうでない場所の区別がつきにくい。

 今回、新規作成したプラグインが動作することが確認できたので、「チラシの裏」しておきたいと思います。
 なお、当方でのニーズの関係で、ここではMach-O形式のみを対象としています。


 テスト環境

 ・mac mini (intel)
 ・Mac OS X 10.5.2
 ・REALbasic 2008r1
 ・Xcode 3.0


 Xcode用テンプレートをセットする

 プラグインの作成にはXcodeを使用します。
 Plugins SDKには、新規プロジェクトが作成し易いよう、テンプレートが用意されています。
 これが使えるよう、セットアップします。
  1. REALbasic 2008 Release 1/Extras/Plugins SDK/Examples/Xcode Mach-O Template/内のREALbasic Mach-O Pluginフォルダ内に、Plugins SDKフォルダ内のGlue CodeIncludesフォルダをコピーします。
    フォルダをコピーせず、代わりにユーザパスを指定しようとしたのですが、(やり方が悪かったのか)うまくいきませんでした。
  2. REALbasic Mach-O Pluginフォルダを以下の場所にコピーします。
    /Developer/Library/Xcode/Project Templates/
    (注:Xcode 3から場所が変わっています。)
    (注2:初出時は/Developer/Library/Xcode/Project Templates/Application/としていましたが、上記の方が分かり易いかもしれません。)

 dylibをビルドする

 プラグインの中身を作成します。
 Xcodeで直接プラグインを作成することはできません。
 dylib形式でビルドし、その後、変換することになります。
 なお、ここでは動作確認が目的なので、Xcodeの設定はデフォルトのまま(つまり、テンプレートの設定のまま)としています。

 以下のサンプルは、与えられた二つの値を合計して返すという、極めてシンプルなものです。
(ウィンドウに配置するコントロール系のプラグインではありません。)
  1. Xcodeを起動し、ファイル>新規プロジェクト...メニューを選択
  2. テンプレート選択ダイアログが表示されるので、REALbasic Mach-O Pluginを選択
  3. プロジェクトに名前をつける。ここでは「PluginTest」とする。
  4. PluginTest.cppを開き、(既に書き込まれているものを全て削除後)以下のコードをコピーする。
    #include "rb_plugin.h"
    
    static int SumVals(int val1, int val2)
    {
        return val1 + val2;
    }
    
    REALmethodDefinition SumValsDefn = {
        (REALproc) SumVals,
        REALnoImplementation,
        "SumVals(val1 as integer, val2 as integer) as integer"
    };
    
    void PluginEntry(void)
    {
        REALRegisterMethod(&SumValsDefn);
    }
    
  5. ビルドする。

 pbx形式に変換する

 2008r1にはコンバータが付属していますが、うちではうまく動きませんでした。
PluginConverterの、App.PushIntoVirtualVolumeのitem.CopyFileTo( vvItem )がBus errorっぽい>なんで?
…と思ったら、本家Forumにコメントがありましたね、旧Plugins SDKのRB Plugin Converterを使えと。
  1. PluginTest.dylib(プロジェクトフォルダ/build/Development/にあります)を、以下の構成をもつフォルダにコピーする。
    PluginTest
      Build Resources
        Mac Carbon Mach-O
          PluginTest.dylib
    
  2. RB Plugin Converterを起動する。
  3. Convert Folder...ボタンを押し、PluginTestフォルダを選択する。すると、指定した場所にpbx形式ファイルが作成される。
  4. できたpbxをREALbsicのpluginsフォルダに移動する。

 動作テストする

 動くかどうか、テストします。
  1. REALbsicを起動する。
  2. Window1にPushButtonを置き、Actionイベントに以下を記述。
    MsgBox Str(SumVals(3,5))
    
  3. 実行する。
  4. PushuButtonを押す。ダイアログに8と表示されればOK。

 おわりに

 今回は基礎編ということで、まずは「プラグイン作成ルートの確定」について書き留めました。
 ルートが確定すれば、内容に集中することができます。
 内容(およびコントロール系のルート)については、次回以降あらためて触れてみたいと思います。

 注)今回のサンプルはあくまで動作確認用で、配布を前提としたものではありません。(配布用とするにはいくつかの配慮が必要なようです。)


 更新履歴

 2008.02.29 「Xcode用テンプレートをセットする」のテンプレートの置き場所を変更
 2008.02.24 新規作成


[Home]  [MacSoft]  [Donation]  [History]