- 追加された行はこの色です。
- 削除された行はこの色です。
[[How2Computing]]
#author("2022-01-13T19:18:06+09:00","","")
-関連トピックス
//--[[Mac OS X の Xcodeでライブラリを作る:http://is.ocha.ac.jp/~gradthesis/index.php?How2dylib]]
--[[Windwos Visual Studio 2010 のC++で動的ライブラリ dll を作る:http://is.ocha.ac.jp/~gradthesis/index.php?How2dll]]
--[[Windwos Visual Studio 2010 で静的ライブラリ lib を作る:http://is.ocha.ac.jp/~gradthesis/index.php?How2lib]]
--[[ccで作ったライブラリ(dylib)をJava (JNA) から使う(Mac OS X 編)::http://is.ocha.ac.jp/~gradthesis/index.php?How2lib]]
*Mac OS X の Xcodeで動的ライブラリ dylib を作る [#xfb23b69]
** Xcode 5 at Mavericks の場合 [#wf1975a6]
最初の選択画面がすこし変わっているが、あとは同じ手順。
http://is.ocha.ac.jp/~gradthesis/gyazo/20140614113602.png
http://is.ocha.ac.jp/~gradthesis/gyazo/20140614114206.png
** Xcode 3 の場合 [#t2fe904b]
以下の例はOSはSnow Leopard 10.6.6, xcodeは3.2.5です
//http://gyazo.com/219394bc2a3cb2387fc62b5d5e5060e2.png
http://gyazo.com/2c19e1dc7f9761555edd694ad47ce3d1.png
** Xcode で dylib を作る [#rf885dbe]
Xcodeのメニュー、「ファイル」「新規プロジェクト...」からBSD C Libraryを選ぶ
http://gyazo.com/f994e6d63062a540779bbcccbc500e60.png
(ここでTypeをStaticにしておくと静的ライブラリが作れるのかもしれない)
プロジェクト名は、ここではとりあえずmydylibにしておく。
Sourceを選択して(中身は空)、「ファイル」「新規ファイル...」からここではC Fileを選ぶ。
http://gyazo.com/8cc13d5d00f188edbb95134960d7b766.png
Cのファイル名は、ここではとりあえずmyfunction.c にしておいた。
ここに、
int myAdd(int a, int b) {
return a+b;
}
という関数を書いてみる。これをビルドすると、mydylib/build/Debug/libmydylib.dylib
というファイルが出来上がる。
必要ならば、「プロジェクト」メニューの、
「アクティブアーキテクチャを設定」からプロセッサを選んだり、
「アクティブなビルド構成を設定」からdebugでなくreleaseを選んだりできる。
また「アクティブなターゲットxxxxを編集」では、インストール先などを指定できる。
出来上がったファイルは、
sudo mv ibmydylib.dylib /usr/local/lib/.
に移動しておく必要がある。
次のコマンドで、出来上がったライブラリを確かめることができる。
$ lipo -info /usr/local/lib/libmydylib.dylib
Non-fat file: /usr/local/lib/libmydylib.dylib is architecture: x86_64
**作ったdylibを使ってみる [#ma117ab9]
ここで作ったlibmydylib.dylibを他のCプログラムから使ってみる。
XcodeでCommand Line Toolのプロジェクトを作る。
http://gyazo.com/27801ab3b4e0b5426424198c54496f87.png
この中で、
int myAdd (int a, int b);
int main (int argc, const char * argv[]) {
printf("value is %d\n", myAdd(3, 5));
return 0;
}
というようなプログラムを書く。
また、libmydylib.dylibをドラッグアンドドロップなどして、プロジェクトに追加しておく。
(ここでは簡単にSourceグループに追加した)
http://gyazo.com/4ef158af3f643833a7acd583ff1193cd.png
これを動かすと、
run
[Switching to process 2114]
実行中...
value is 8
のような結果が得られる
**他の言語からの利用 [#x0a1979e]
以下のサイトによると、
こうして作った動的ライブラリは、REALbasicからも利用できるようです。
-[[Xcodeでのdylib作成と、REALbasicからの利用:http://blog.macfeeling.com/realbasic/xcodedylibrealbasic]]
*Mac OS X の Xcodeで静的ライブラリ a を作る [#oc509903]
staticを選択してみる。
http://gyazo.com/1905b415f5b019448728bb7d3c2569e3.png
ここでプロジェクトを、stalibと命名。
プロジェクトにCプログラムを追加して、そこにこんなプログラムを書いてみる。
int staticAdd(int a, int b) {
return a+b;
}
これをビルドすると、
できあがったライブラリファイルは拡張子が.a。
これも/usr/local/libにコピー。
情報を見ると以下のようになっている。
$ lipo -info /usr/local/lib/libstalib.a
input file /usr/local/lib/libstalib.a is not a fat file
Non-fat file: /usr/local/lib/libstalib.a is architecture: x86_64
これも同様に、以下のようにして、他のプログラムから利用出来る。
http://gyazo.com/fd9408ab2f740b9fd0aaf751e8e993e7.png