Sharpie はこの SDK のコンパイル可能なコードを生成できなかったため、P/Invoke を使用して iOS SDK にバインドするラッパーを作成しています。
ラッパー プロジェクトを参照して iOS アプリをコンパイルすると、次のような多くのリンクの問題が発生します。
MTOUCH: エラー MT5210: ネイティブ リンクに失敗しました。未定義のシンボル: std::locale::classic()。必要なすべてのフレームワークが参照され、ネイティブ ライブラリが適切にリンクされていることを確認してください。 MTOUCH: エラー MT5210: ネイティブ リンクに失敗しました。未定義のシンボル: std::__throw_bad_cast()。必要なすべてのフレームワークが参照され、ネイティブ ライブラリが適切にリンクされていることを確認してください。必要なすべてのフレームワークが参照され、ネイティブ ライブラリが適切にリンクされていることを確認してください (この完全なログ ファイルで完全なログを見つけてください)。
iOS プロジェクトから渡される追加の mono touch 引数を以下に示します。
-cxx -v -gcc_flags "-L${ProjectDir} -lstdc++ -lresolv -liconv -lxml2 -lz -ObjC -force_load ${ProjectDir}/Libs/libcrypto.a" -cxx -v -gcc_flags "-L${ProjectDir } -lstdc++ -lresolv -liconv -lxml2 -lz -ObjC -force_load ${ProjectDir}/Libs/libssl.a" -cxx -v -gcc_flags "-lstdc++ -lresolv -liconv -lxml2 -lz -ObjC -L${ProjectDir } -framework Security -framework CoreVideo -framework CoreMedia -framework AVFoundation -framework CFNetwork -framework Accelerate -framework AudioToolbox -framework CoreAudio -framework Foundation -framework CoreGraphics -framework UIKit -force_load ${ProjectDir}/Libs/libsipwrapper.a -dead_strip -all_load "
SDK は、libcrypto.a、libssl.a、libsipwrapper.a の 3 つのライブラリで構成されています。
インターネット上の多くの記事/投稿に従って、-lstdc++、lz、および ObjC などの標準ライブラリを追加することをお勧めしますが、これは私の場合は機能しないようです。
また、3 つのライブラリとラッパー コードを含むバインド プロジェクトを作成しようとしましたが、linkwith ファイルに追加されたコンテンツは次のようになります。
[アセンブリ: LinkWith ("libsipwrapper.a", LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Arm64, フレームワーク = "CoreVideo CoreMedia AVFoundation CFNetwork Accelerate AudioToolbox CoreAudio Foundation CoreGraphics UIKit", ForceLoad = false, SmartLink = true, IsCxx = true, LinkerFlags = "-lstdc++ -lresolv -liconv -lxml2 -lz -ObjC")]
問題は解決されず、記載されているリンク エラーが引き続き発生します。