我创建了一个需要以下框架的 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 文件应添加到 Native References 下的绑定项目中。要更改框架或链接标志等,请右键单击并打开属性。