【发布时间】:2012-01-10 23:33:37
【问题描述】:
我正在尝试使用 DllImport 在模拟器中获取与 Monodroid 一起使用的 Native C/C++ 库。我主要在 Windows/Visual Studio 2010 中进行开发。
我使用 Android NDK 工具构建了一个原生 C/C++ 库 (ZeroMQ),适用于 x86 和 armeabi 平台,使用 Ubuntu 虚拟机。这是正确的 - 模拟器的 x86 和真实设备的 armeabi 吗? (在 iPhone/MonoTouch 上肯定是这种情况——尽管在这种情况下静态链接 libzmq.a 文件和 DllImport __Internal)
我已经将 x86 版本的 libzmq.so 添加到了我的 MonoDroid 项目的目录结构 lib\x86\libzmq.so 下
当我第一次尝试构建/部署到模拟器时,我收到一个错误“无法确定 abi 类型”,因此我将 x86 添加到 AndroidNativeLibrary Include="lib\x86\libzmq.so"> 项目项组.然后部署。
我有一个用于调用 [DllImport("libzmq"
的函数的 DllImport我尝试过 libzmq.so、lib/x86/libzmq、lib/x86/libzmq.so 等,但后来我调用 DllImported 方法(在模拟器中运行),我总是得到 DllNotFoundException。
谁能给我一些指导?
编辑:在阅读了另一个支持答案,其中指出模拟器使用 armeabi .so 库后,我删除了 x86/libzmq 并将我的 lib/armeabi/libzmq.so 添加为 AndroidNativeLibrary。我还删除了项目文件 Abi 条目,确实项目构建和部署良好。
但是,当我尝试调用 DllImported 函数时,仍然得到 DllNotFoundException。有什么想法吗?
非常感谢
【问题讨论】:
标签: xamarin.android