我有两个胖框架,每个框架有两个切片(arm64和x86_64(:MyDbEngine.framework和MyDbClient.framework。 每个框架都包含相同的入口点函数:MyDbConfigure((、MyDbInit(( 和 MyDbDeInit((。 我正在尝试弄清楚如何将这两个框架添加到 Xamarin.iOS iOS 应用程序项目中,以便应用程序安装这两个框架,但是当我调用入口点时,它需要在特定框架(在本例中为 MyDbClient.framework(中完成。 我似乎无法弄清楚如何做到这一点,因为 iOS 上的 DllImport 如何强制使用__Internal
而不是指定要加载的特定框架。
例如,在我的 Xamarin.Android 应用项目中,我可以在相应的 \lib\arm64-v8a\ 或 \lib\x86_64\ 文件夹下为我的框架(MyDbEngine.so 和 MyDbClient.so(添加单个动态链接的共享对象 (.so( 文件等效项,然后指定[DllImport(libZenDb, EntryPoint = "ZenDbConfigure")]
以从 MyDbClient.so 显式加载入口点。
有没有办法在Xamarin.iOS中做到这一点?
显然,我正在将"将 C/C++ 库与 Xamarin 一起使用 - 包装本机库"的文档与包含框架的文档混搭在一起,并假设 DllImport 调用必须引用"__Internal"来加载框架。
事实证明,这可以通过指定要加载的确切框架来实现。因此,继续我之前的示例,对我尝试执行的操作的正确调用是:
[DllImport("MyDbClient.framework/MyDbClient, EntryPoint = "MyDbConfigure"]