我正在尝试在Xamarin的文档中找到directions之后的Xamarin.Android项目中链接一个包含C ++代码的静态库(foo.a)。 “路径嗅探方法”和“项目文件中的Abi元素”方法似乎都不起作用。
当我尝试调用库函数时,使用任一方法都会得到未处理的异常:
I/mono( 2591): [ERROR] FATAL UNHANDLED EXCEPTION: System.EntryPointNotFoundException: ...
我应该提一下,我使用“附加的mtouch参数”-cxx方法here与我的Xamarin.iOS项目链接和调用这个库(为armv7,armv7s构建)没有问题。我的所有DLLImports都是跨平台的......
[DllImport(Import.lib, CallingConvention=CallingConvention.Cdecl )]
internal static extern IntPtr FooMethodName(args);
那么,我错过了什么?
供参考: 我正在使用Xamarin Studio 4.0.5(build 4),Xamarin.Android 4.6.4(商业版)
答案 0 :(得分:9)
我意识到这个问题已经超过一年了,但是由于我最近不得不做到这一点,而且在同一个地方碰到了我的脑袋,无论如何我都会去看看......
TL; DR:您无法将静态库与Xamarin for Android链接,您只能链接动态库(.so)
步骤:
extern "C"
{
void my_function(bool someParameter);
}
namespace MyApp
{
public static class MyLibrary
{
[DllImport("libmylibrary", EntryPoint = "my_function")]
public static extern void MyFunction(Boolean someParameter);
}
}