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

时间:2012-06-05 13:29:44

标签: binding xamarin.ios dylib

我想将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")]

需要以下库:

  • 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退出状态

     

使用代码1退出mtouch

1 个答案:

答案 0 :(得分:6)

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

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