[[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