私は worklight、wikitude と呼ばれる拡張現実プラグイン、および sqlcipher と呼ばれるフレームワークを使用しています。デバイスまたはアーカイブ用にビルドするときは iOS で正常に動作しますが、シミュレーター用にビルドしようとすると、見たことのない警告が表示され、その後に多数の重複シンボル エラーが続きます。
ld: warning: tentative definition of '_OPENSSL_ia32cap_P' with size 8 from '/Users/mine/apps/wl/iphone/native/Frameworks/sqlcipher.framework/sqlcipher(cryptlib.o)'
is being replaced by real definition of smaller size 4 from '/Users/mine/apps/wl/iphone/native/libWikitudeSDK.a(cryptlib.o)'
次に、このエラー(切り捨て):
duplicate symbol _CRYPTO_THREADID_cmp in:
/Users/mine/apps/wl/iphone/native/Frameworks/sqlcipher.framework/sqlcipher(cryptlib.o)
/Users/mine/apps/wl/iphone/native/libWikitudeSDK.a(cryptlib.o)
.
.
.
duplicate symbol _OpenSSLDie in:
/Users/mine/apps/wl/iphone/native/Frameworks/sqlcipher.framework/sqlcipher(cryptlib.o)
/Users/mine/apps/wl/iphone/native/libWikitudeSDK.a(cryptlib.o)
ld: 33 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Wikitude は libWikitudeSDK.a を介してプロジェクトに含まれており、ライブラリ ビルド フェーズとのリンクにあります。sqlcipher は同じ場所に追加された .framework です。-all_load を使用したときに、wikitudeSDK と worklightSDK の間で上記と同じ重複シンボルの問題が発生したため、他のリンカー フラグは -ObjC に設定されています。
重複エラーを回避する方法については、このブログの指示に従いましたが、cryptlib.o に関する 1 つの問題は修正されますが、何百もの新しい重複シンボル エラーが発生するだけです。新しいライブラリを構築するときに lipo -arch_blank i386 も試しましたが、アーキテクチャ i386 エラーの未定義シンボルのみが発生します。
明確にするために、シミュレーター内で拡張現実コンポーネントを実行しようとしているわけではありません。シミュレーターを使用して、ウィキチュードに依存しないアプリケーションの他の側面を開発したいだけです。
プロジェクトからウィキチュードを一時的に削除することはオプションですが、プロジェクトのバージョン管理は関係者全員にとってこれを頭痛の種にし、余分な不要な複雑さをもたらします。
洞察をお寄せいただきありがとうございます。