在 Xamarin iOS 项目中链接 libz.dylib 和 libsqlite3.dylib

Linking libz.dylib and libsqlite3.dylib in Xamarin iOS Project

我创建了一个需要以下框架的 Xamarin iOS 绑定项目:

SystemConfiguration.framework
CoreTelephony.framework
libz.dylib
libsqlite3.dylib

我在 iOS 绑定项目中将以下行添加到 linkwith.cs 文件:

Frameworks = "SystemConfiguration CoreTelephony"

这似乎工作正常,并告诉该项目在绑定时包含这些框架。根据我的阅读,听起来剩下的 2 个库需要添加为项目中的链接器标志,引用从我的 iOS 绑定项目生成的 DLL。所以我创建了一个测试应用程序,导入了 DLL,现在需要添加链接器标志,但我的项目找不到正确的库。

我在 Xamarin Studio 中的链接器标志如下:

-gcc_flags "-lz -lsqlite3.0"

当我构建我的 Xamarin 测试应用程序时,我收到一些关于找不到框架的错误。是否有额外的标志需要链接,或者我是否需要在我的 iOS 绑定项目中做一些额外的配置?

我找到了一个很棒的资源:http://ipixels.net/blog/specify-extra-gcc-flags-for-native-library-binding-in-xamarin-ios/

我需要将 LinkerFlags = "-lz -lsqlite3.0" 添加到我的 .linkwith.cs 文件中。然后我重建库以生成一个新的 DLL 并将其添加到我的测试应用程序中。然后测试应用程序正确构建。

如果您使用 sharpie 为 cocoapod 创建绑定:

sharpie pod init ios nameOfCocoaPod
sharpie pod bind

您会得到一个 nameOfCocoaPod.framework 文件和 .cs 绑定文件。

nameOfCocoaPod.framework 文件应添加到本机引用下的绑定项目中。改变例如框架或 LinkerFlags,右键单击并打开属性。