3

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

它需要以下库:

  • 基础框架
  • UIKit.framework
  • CoreGraphics.framework
  • QuartzCore.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”,引用自:-[AFLocalyticsDatabase init] in libAviarySDK.a(AFLocalyticsDatabase.o)

“_sqlite3_busy_timeout”,引用自:-[AFLocalyticsDatabase init] in libAviarySDK.a(AFLocalyticsDatabase.o)

“_sqlite3_exec”,引用自:-[AFLocalyticsDatabase beginTransaction:] in libAviarySDK.a(AFLocalyticsDatabase.o)

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

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

mtouch 以代码 1 退出

4

1 回答 1

6

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

[assembly: LinkWith ("your_lib.a", LinkTarget.ArmV7, ForceLoad = true, LinkerFlags="-lsqlite3.0")]
于 2012-06-05T15:02:27.707 回答