Xcodeでのdylib作成と、REALbasicからの利用
2008.01.08 by admin
このページは、Creating a dylib to use with REALbasicに書かれていることを、簡単にまとめたものです。詳しくは原文をご覧ください。
dylibの作成
- Xcodeを起動(Mac OS X 10.5.1上でXcode 3.0を使用)
- 「ファイル」メニューより「新規プロジェクト…」を選択
- 「空のプロジェクト」を選択して、「次へ」ボタンをクリック

- プロジェクト名を設定(ここでは”SampleDylib”とします)
選択ボタンをクリックして、プロジェクトの保存先を指定(ここでは、書類フォルダにします)
「完了」ボタンをクリック

- 「プロジェクト」メニューより「新規ターゲット…」を選択
「Carbon」の中の「Dynamic Library」を選択
「次へ」ボタンをクリック

- ターゲット名を入力(ここでは”SampleDylib”とします)
「完了」ボタンをクリック

- 「ファイル」メニューより「新規ファイル…」を選択
「Carbon」の中の「C File」を選択
「次へ」ボタンをクリック

- ファイル名を設定(ここでは”SampleDylib.c”とします。)
「同時に”**********.h”ファイルも作成」にチェックが入っていることを確認して(ここでは、**********の部分はSampleDylib)
「完了」ボタンをクリック

- Xcodeのグループとファイルの「SampleDylib.c」を選択
(コードが表示されていない場合は、右上「エディタ」アイコンをクリック)
以下のコードを追加
#include <string.h> int addFunction( int a, int b ) { return a + b; } int stringLength( char *str ) { return strlen(str); }
- 「ファイル」メニューより「保存」を選択して、ファイルの保存。
「ビルド」アイコンをクリックまたは「ビルド」メニューより「ビルド」を選択して、ビルド。 - 問題なければ、プロジェクトファイルがある場所の「build」 ->「Debug」フォルダ内に拡張子がdylibの「SampleDylib.dylib」というファイルが作成されています。
(XcodeのプロジェクトウィンドウでSampleDylib.dylibを選択して右クリックで「Finderで表示」を選ぶことで、すばやく表示することができます)
REALbasicからの利用
- REALbasicを起動 (Mach-Oを作成できるのは5.5以降のバージョン。ここでは2007r5を使用)
「File」メニューより「new project」を選択しDesktop Applicationを作成 - 「Project」メニューより「Build Settings…」を選択し
Mac OS X Universal Binary、PowerPC, Intelのいずれかを選択 - 「File」メニューより「Save」を選択しプロジェクトを保存。(ここでは”Test Dylib.rb”にします。)
- プロジェクトの保存先に、Xcodeで作成した「SampleDylib.dylib」ファイルをコピー。

- Project windowのAppを選択して
Event HandlersのOpenに
以下のコードを追加#if DebugBuild then CONST dylibLocation = "@executable_path/../../../SampleDylib.dylib" #else CONST dylibLocation = "@executable_path/SampleDylib.dylib" #endif Declare Function addFunction lib dylibLocation (a as integer, b as Integer) as Integer Declare Function stringLength lib dylibLocation (s as CString) as Integer msgBox "5 + 2 = " + str(AddFunction(5,2)) msgBox "The length of ""asdf"" is " + str(stringLength("asdf"))

- Runアイコンをクリックするか、「Project」メニューより「Run」を選択
アプリケーションが起動して


のように表示されます。 - 問題なければ、Buildアイコンをクリックするか、「Project」メニューより「Build Application」を選択して、アプリケーションを選択。
出来上がったアプリケーションをFinderで選択して右クリックでパッケージの内容を表示で、「Contents」 ->「MacOS」の中にSampleDylib.dylibをコピー


素晴らしいですね! とても興味深いです。
新しい言語をゼロから学ぶ場合に、Hello worldから始めないといけないのかと思うと先が見えなくて、なんだか二の足を踏んでしまいますが、こんなふうによく知っている言語からちょいちょいと利用できるかと思うと、やってみたいな、という気になります。 :grin:
Pencilさん、ご無沙汰してます。
プラグインもXcodeを使って作成できますが、公開するのでなければ、ダイナミックライブラリの方が簡単に試せるのではないかと思います。
私はlibusb.dylibを取り込んだものを作成しているのですが(公開できるレベルにはなっていませんが)、memoryblockを使えば、関数から複数の値を戻すこともできますし(これについてはなるべく早く追記します)、後は工夫次第ではないでしょうか