如何在MonoTouch绑定项目中添加libsqlite3.0.dylib?

Sht*_*man 3 binding dylib xamarin.ios

我想将Aviary SDK Objective-C库集成到Monotouch项目中.我使用'Monotouch Binding Project'模板.所以我创建了API定义文件并定义了LinkWith属性.

[assembly: LinkWith ("libAviarySDK.a", LinkTarget = LinkTarget.ArmV6 | LinkTarget.ArmV7 | LinkTarget.Simulator, ForceLoad = true, IsCxx = true, Frameworks="CoreGraphics QuartzCore Accelerate StoreKit CoreData", LinkerFlags="-ObjC -all_load -fobjc-arc")]
Run Code Online (Sandbox Code Playgroud)

它需要以下库:

  • Foundation.framework
  • UIKit.framework
  • CoreGraphics.framework
  • QuartzCore.framework
  • Accelerate.framework
  • StoreKit.framework
  • libz.1.2.5.dylib
  • libsqlite3.0.dylib
  • CoreData.framework

除了libsqlite3.0.dylib之外,所有这些框架都没有问题链接

我遇到的问题是,库依赖于libsqlite3.0.dylib,我不知道如何在我的MonoTouch应用程序中包含这些框架.

在结果中 - 编译器返回以下错误:

/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib -u _catch_exception_raise -force_load /var/folders/2n/ql7wkht57cg8wfgzz0cr9trm0000gn/T/tmp31d0b99b.tmp/libAviarySDK.a -ObjC -all_load -fobjc-arc

架构i386的未定义符号:

"_sqlite3_open",引自: - libAviarySDK.a中的[AFLocalyticsDatabase init](AFLocalyticsDatabase.o)

"_sqlite3_busy_timeout",引自: - libAviarySDK.a中的[AFLocalyticsDatabase init](AFLocalyticsDatabase.o)

"_sqlite3_exec",引自: - libAviarySDK.a中的[AFLocalyticsDatabase beginTransaction:](AFLocalyticsDatabase.o)

*和许多其他相同的参考*

ld:找不到架构i386的符号collect2:ld返回1退出状态

mtouch退出代码1

pou*_*pou 6

尝试添加-lsqlite3.0到您LinkerFlags的绑定,以指示(本机)链接器加载SQLite库(和符号).

[assembly: LinkWith ("your_lib.a", LinkTarget.ArmV7, ForceLoad = true, LinkerFlags="-lsqlite3.0")]
Run Code Online (Sandbox Code Playgroud)