我想将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")]
需要以下库:
除了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
答案 0 :(得分:6)
尝试将-lsqlite3.0
添加到LinkerFlags
以获取绑定,以指示(本机)链接器加载SQLite库(和符号)。
[assembly: LinkWith ("your_lib.a", LinkTarget.ArmV7, ForceLoad = true, LinkerFlags="-lsqlite3.0")]