2017-11-06 35 views
1

コードが実行されている間に使用しようとしている.soファイルが多いフォルダがあります。 enter image description hereアンドロイドプロジェクトの.dllまたは.soファイルにアクセスする方法Xamarin

私は「外部」と呼ばれるフォルダに配置して、私はこのようにそれらにアクセスしよう:私はまだ

[DllImport("External\\libvocon_ext_heap.so", EntryPoint = "ph_CreateWin32PrivateHeap", CallingConvention = CallingConvention.Cdecl)] 
public static extern PH_ERROR ph_CreateWin32PrivateHeap(ref LH_HEAP_INTERFACE pHeapInterface, out IntPtr ppHeapInst); 

は、私はまた、資産フォルダ内のファイルを配置しようとしましたが、同じSystem.DllNotFoundExceptionを取得します

答えて

0

を参照してください。主な問題は、プロジェクトにライブラリファイルを保存した方法でした。ライブラリファイルを特定するためには、それらを特定のディレクトリの下に格納する必要があります。代わりに私が行ったように、彼らは次のように保存する必要がある必要があり、 "外部" ディレクトリに格納する:

  • LIBS> armeabiを>
  • LIBS> armeabi-v7a> libfoo.so
  • libfoo.so
  • LIBS>のx86>

libfoo.soアンドロイドCPUが3つの異なるARMアーキテクチャに基づくことができるので、これらのアーキテクチャ(armeabi、armeabi-v7aのx86)のそれぞれのディレクトリが存在しなければなりません。あなたが唯一それが自身で正しいディレクトリのパスを探しますので、ライブラリファイルの名前を書く必要があり

[DllImport("libvocon_ext_heap.so", EntryPoint = "ph_CreateWin32PrivateHeap", CallingConvention = CallingConvention.Cdecl)] 

:私はこのようなライブラリファイルと呼ばれます。 "vocon_ext_heap"のような名前を書くこともできます。これは、ファイル名に "lib"と ".so"が自動的に追加されるためです。

Xamarin SDKマネージャを再インストールする可能性のある解決策が見つかったため、Xamarin SDKマネージャを再インストールしましたが、何か修正されているかどうかわかりません。また、もちろん、ライブラリはSoftlionのようにAndroidNativeLibraryとしてビルドする必要があります。

0

soファイルのビルドアクションをAndroidNativeLibraryに設定しましたか?

これは後半の答えですが、私は私の問題への解決策を見つけたhttps://developer.xamarin.com/guides/android/advanced_topics/using_native_libraries/

+0

これは残念ながら、まだSystem.DllNotFoundExceptionを取得しませんでした。しかし、ドキュメントによると、それは問題の解決の一部なので、私は前よりももっと近づくはずです。ありがとう。 –

関連する問題