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

北慕城南 提交于 2019-12-11 10:09:50

问题


I created a Xamarin iOS binding project that requires the following frameworks:

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

I added the following line in my iOS binding project to the linkwith.cs file:

Frameworks = "SystemConfiguration CoreTelephony"

This seems to work correctly and tell that project to include these frameworks when binding. From what I have read, it sounds like the remaining 2 libraries need to be added as linker flags in the project referring to the DLL generated from my iOS binding project. So I created a test app, imported the DLL, and now need to add the linker flags but my project cannot find the right libraries.

My linker flags in Xamarin Studio are as follows:

-gcc_flags "-lz -lsqlite3.0"

When I build my Xamarin test app I get the a few errors regarding the frameworks cannot be found. Are there additional flags that need to be linked or do I need to do some additional configuration in my iOS binding project?


回答1:


I found a great resource: http://ipixels.net/blog/specify-extra-gcc-flags-for-native-library-binding-in-xamarin-ios/

I needed to add LinkerFlags = "-lz -lsqlite3.0" to my .linkwith.cs file. I then rebuilt the library to generate a new DLL and added this to my test app. The test app builds correctly then.




回答2:


If you are creating your bindings for a cocoapod using sharpie:

sharpie pod init ios nameOfCocoaPod
sharpie pod bind

you get a nameOfCocoaPod.framework file and .cs-binding files.

The nameOfCocoaPod.framework file should be added to your binding project under Native References. To change e.g. Frameworks or LinkerFlags, right-click and open properties.



来源:https://stackoverflow.com/questions/29752620/linking-libz-dylib-and-libsqlite3-dylib-in-xamarin-ios-project

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!