0

私のVisual Studio Xamarin Forms iOSプロジェクトでは、Visual Studio Cross C++ Platformを使用してビルドしてデプロイしたネイティブ(C++)ライブラリとリンクしています。実際のデバイス(Macサーバー経由)とリンクして実行することはできますが、シミュレータを使用することはできません。同じリンク設定でビルドすると、ビルドが失敗し、エントリポイントを見つけることができなくなります。リンクしないことを選択した場合、ビルドは成功しますが、ネイティブコードを呼び出そうとした時点でEntrypointnotfoundexceptionが発生します。Visual Studio xamarinはiOSエントリーポイントをシミュレータではなくiphoneでないと書いています

+0

サンプルをアップロードする方法はありますか? – Paul

+0

私はこのブログのステップとコードに従います: http://kerry.lothrop.de/c-libraries/ しかし、私は最初から書いたより複雑な解決策にもそれを取り入れます。 – PatMac

+0

このソリューションは問題の調査に役立っていますか? – PatMac

答えて

0

サンプルコードhereを使用して、あなたのコメントからexampleを送信しました。私はそれが正しく動作するようにいくつかのことをしなければならなかった。私の問題はXamarin.iOSにありましたが、Xamarin.Formsにも同じ手順を適用できます。プラットフォーム固有の統合がすでに動作していることを前提としています。

物理デバイス上で動作するコードがあるので、.aライブラリにはすでにNative Static Referenceが必要です。しかし、iOSシミュレータはx86_64アーキテクチャ(iOS 11以降のバージョンはdoes not support i386)で動作しますが、デバイスはARMのバージョン/バリアントで動作する可能性があります。あなたのライブラリはあなたのデバイスのアーキテクチャだけをサポートするように作られているようです。あなたは、あなたのMacからlipoを実行することにより、これを確認することができます。

% lipo -info /usr/lib/libCLib.iOS.a

それらを組み合わせ、その後、(this articleを参照)だけでなく、SIMのアーキテクチャをサポートしてサポートする必要があるのアーキテクチャにC++プロジェクトをビルドするには、そのよう:

lipo -create -output libCLib.iOS.a libCLib.iOS-x8664.a libCLib.iOS-arm64.a

が戻ってVisual Studioで新しいNative Static Referenceファイルとしてその出力.aファイルを使用してください。プロジェクト設定のSupported Architecturesx86_64に変更してください。これがすべてになります。これが誰かを助けることを願っています。

関連する問題