2017-11-06 2 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

를 참조하십시오. 주요 문제는 프로젝트에 라이브러리 파일을 저장 한 방법이었습니다. 라이브러리 파일을 찾으려면 특정 디렉토리 아래에 저장해야합니다. armeabi> libfoo.so

  • libs와> armeabi-V7A>은 libfoo.so>

    • libs가 대신 내가 그랬던 것처럼 "외부"디렉토리에 저장, 그들은 다음과 같이 저장 될 필요가있다
    • libs가> 86> libfoo.so 안드로이드의 CPU는 3 가지 ARM 아키텍처를 기반으로 할 수 있기 때문에, 그 아키텍처 (armeabi, armeabi-V7A, 86)의 각각에 대한 디렉토리이 있어야한다

    . 당신은 그 자체로 올바른 디렉토리 경로를 찾을 때문에 라이브러리 파일의 이름을 쓸 필요가

    [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을 가져옵니다. 그러나 문서에 따르면이 문제의 해결책의 일부이므로 이전보다 감사해야합니다. 감사합니다. –

    관련 문제