我有Xamarin表单跨平台项目- Android,iOS和UWP。我有一个C++ DLL项目,我从它创建了一个DLL。我的目的是将这些C++代码集成/调用到Xamarin forms交叉中。我知道如何使用C++程序集指令从C#控制台应用程序调用DLLImport,但在Xamarin上我得到了DllNotFoundException。
那么,在哪里必须复制或引用DLL文件才能工作呢?
.dll和其他文件(当前项目试图引用DLL )。(我引用了这个https://www.youtube.com/watch?v=V5hZRtSB-2Q,它适用于C#控制台)System.DllNotFoundException。DllNotFoundException。代码:
项目结构

参考教程/代码
https://blogs.msdn.microsoft.com/vcblog/2015/02/23/developing-xamarin-android-native-applications/
发布于 2018-09-06 17:53:32
在花了这么多时间和测试之后,我发现了这个问题。
为了加载库,应该将C++打包为.so(共享对象)扩展。
这个文件必须打包并放置在安卓的.apk中。
1. **Option 1** : create `lib/abi_name` folder and set .so file as `AnroidNativeLibrary` where `abi_name` can be - armeabi
- armeabi-v7a
- arm64-v8a
- x86
- x86\_64重要注意事项:为了将.so文件复制到APK文件夹结构中,应该与上面完全相同。如果设备支持的体系结构是arm64-v8a,但是只创建了x86文件夹,那么.so文件将在APK中不可用,我们仍然可以得到DllNotFoundException。
1. **Option 2**: Add .so file into android project with Build action `AndroidNativeLibrary` with `<ABI>` tag specifier. In Android .csproj file add as below.armeabi
如果有人想要工作代码,我已经为此添加了Github存储库XamarinNDKSample。
https://stackoverflow.com/questions/52173245
复制相似问题