2017-06-27 4 views
0

私は自分のMacBookにdylibファイルを持っています。私が作成したiPhoneアプリケーションで使用したいと思います。私はいつものようにdlopenを使用してみてください:iPhoneのローカルダイナミックライブラリを使用

#include <dlfcn.h> 
char* dylibPath = "/Users/benams/lib.dylib";  
void* libHandle = dlopen(dylibPath, RTLD_NOW); 

libHandleがnullで、私は理由がdylibファイルは私のiPhone上に存在しないということだと思います。私は私のアプリをデバッグするときに私はそれを解決し、このdylibを使用することができますか?

+0

dylibはARM用にビルドされていますか? – rckoenes

+0

@rckoenesはい、それはarm64の – benams

答えて

0

一般に、iOSでダイナミックライブラリを開くこともできます。しかし、iOSでmacOSの動的ライブラリを使用することはできません。なぜなら、それらは異なるプロセッサアーキテクチャを持っているからです(x86_64 vs. arm?)。 arm32とarm64プロセッサ用にライブラリをコンパイルする必要があります。アプリを(アプリストア内に)デプロイする場合は、ライブラリにコード署名する必要があります。

しかし、iOS用の静的ライブラリを作成して組み込むことや、共有フレームワークを使用する方がずっと簡単です。注:一般にダイナミックライブラリや共有フレームワークは、複数の実行可能ファイル(たとえば、appとその拡張子)に再利用する場合にのみ意味があります。

+0

IOSのために作られました、 'lipo -info'の結果:"非脂肪ファイル:lib.dylibはアーキテクチャ:arm64 " – benams

+0

あなたは' dlerror() 'と相談してエラー? – clemens

+0

チップをありがとう。エラーは、 "dlopen(/Users/benams/lib.dylib、2):image not found"です。上で述べたように、.dylibファイルはMacBookに保存されていますが、iPhone上でアプリケーションをデバッグします(ファイルがデバッグされたマシンにないことを意味します) – benams

関連する問題