Xamarin.iOS 如何:包含多个具有相同入口点函数的胖框架?
Xamarin.iOS how to: include multiple fat frameworks with same entry point funcs?
我有两个胖框架,每个框架有两个切片(arm64 和 x86_64):MyDbEngine.framework 和 MyDbClient.framework。每个框架都包含相同的入口点函数:MyDbConfigure()、MyDbInit() 和 MyDbDeInit()。我试图弄清楚如何将这两个框架添加到 Xamarin.iOS iOS 应用程序项目中,以便应用程序安装这两个框架,但是当我调用入口点时,它需要在特定的框架(在本例中为 MyDbClient.framework)。由于 iOS 上的 DllImport 如何强制使用 __Internal
而不是指定要加载的特定框架,我似乎无法弄清楚如何执行此操作。
例如,在我的 Xamarin.Android 应用程序项目中,我可以为我的框架(MyDbEngine.so 和 MyDbClient.so)添加单独的动态链接共享对象 (.so) 文件适当的 \lib\arm64-v8a\ 或 \lib\x86_64\ 文件夹,然后指定 [DllImport(libZenDb, EntryPoint = "ZenDbConfigure")]
以从 MyDbClient.so.
显式加载入口点
Xamarin.iOS有没有办法做到这一点?
显然,我将“Use C/C++ libraries with Xamarin - Wrapping the Native Library”的文档与包含框架的文档混合在一起,并假设 DllImport 调用必须引用“__Internal”来加载框架。
事实证明,这可以通过指定要加载的确切框架来实现。所以继续我之前的例子,我想要做的事情的正确调用是:
[DllImport("MyDbClient.framework/MyDbClient, EntryPoint = "MyDbConfigure"]
我有两个胖框架,每个框架有两个切片(arm64 和 x86_64):MyDbEngine.framework 和 MyDbClient.framework。每个框架都包含相同的入口点函数:MyDbConfigure()、MyDbInit() 和 MyDbDeInit()。我试图弄清楚如何将这两个框架添加到 Xamarin.iOS iOS 应用程序项目中,以便应用程序安装这两个框架,但是当我调用入口点时,它需要在特定的框架(在本例中为 MyDbClient.framework)。由于 iOS 上的 DllImport 如何强制使用 __Internal
而不是指定要加载的特定框架,我似乎无法弄清楚如何执行此操作。
例如,在我的 Xamarin.Android 应用程序项目中,我可以为我的框架(MyDbEngine.so 和 MyDbClient.so)添加单独的动态链接共享对象 (.so) 文件适当的 \lib\arm64-v8a\ 或 \lib\x86_64\ 文件夹,然后指定 [DllImport(libZenDb, EntryPoint = "ZenDbConfigure")]
以从 MyDbClient.so.
Xamarin.iOS有没有办法做到这一点?
显然,我将“Use C/C++ libraries with Xamarin - Wrapping the Native Library”的文档与包含框架的文档混合在一起,并假设 DllImport 调用必须引用“__Internal”来加载框架。
事实证明,这可以通过指定要加载的确切框架来实现。所以继续我之前的例子,我想要做的事情的正确调用是:
[DllImport("MyDbClient.framework/MyDbClient, EntryPoint = "MyDbConfigure"]