0

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

4

1 に答える 1

0

ここで彼のサンプルコードを使用して、あなたのコメントのを調べました。正しく実行するには、いくつかのことを行う必要がありました。私の問題は Xamarin.iOS にありましたが、プラットフォーム固有の統合が既に機能していると仮定すると、同じ手順を Xamarin.Forms に適用できます。

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

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

シムのアーキテクチャもサポートするには (この記事を参照)、サポートする必要があるアーキテクチャに合わせて C++ プロジェクトをビルドし、次のように組み合わせます。

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

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

于 2018-02-20T20:30:32.443 に答える