【发布时间】:2012-08-08 15:24:46
【问题描述】:
我正在尝试在我的一个应用程序中实现 Facebook,因此遵循了 Hackbook 上的官方 Facebook 教程。 https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/
我按照描述实现了所有内容,没有收到任何错误或警告。但是,当我尝试构建应用程序时,我收到 17 个 Mach-O 链接器错误。
Undefined symbols for architecture i386:
"_FBSessionStateChangedNotification", referenced from:
-[ForeverMainViewController sessionStateChanged:state:error:] in ForeverMainViewController.o
"_sqlite3_bind_double", referenced from:
-[FBCacheIndex _updateEntryInDatabaseForKey:entry:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _writeEntryInDatabase:] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_bind_int", referenced from:
-[FBCacheIndex _updateEntryInDatabaseForKey:entry:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _writeEntryInDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _trimDatabase] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_bind_text", referenced from:
-[FBCacheIndex _updateEntryInDatabaseForKey:entry:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _writeEntryInDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _removeEntryFromDatabaseForKey:] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_close", referenced from:
___23-[FBCacheIndex dealloc]_block_invoke_0 in FacebookSDK(FBCacheIndex.o)
"_sqlite3_column_double", referenced from:
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_column_int", referenced from:
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _fetchCurrentDiskUsage] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _trimDatabase] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_column_text", referenced from:
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _trimDatabase] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_errmsg", referenced from:
_releaseStatement in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _updateEntryInDatabaseForKey:entry:] in FacebookSDK(FBCacheIndex.o)
_initializeStatement in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _writeEntryInDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _fetchCurrentDiskUsage] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _removeEntryFromDatabaseForKey:] in FacebookSDK(FBCacheIndex.o)
...
"_sqlite3_exec", referenced from:
___36-[FBCacheIndex initWithCacheFolder:]_block_invoke_0 in FacebookSDK(FBCacheIndex.o)
"_sqlite3_finalize", referenced from:
_releaseStatement in FacebookSDK(FBCacheIndex.o)
"_sqlite3_open_v2", referenced from:
___36-[FBCacheIndex initWithCacheFolder:]_block_invoke_0 in FacebookSDK(FBCacheIndex.o)
"_sqlite3_prepare_v2", referenced from:
_initializeStatement in FacebookSDK(FBCacheIndex.o)
"_sqlite3_reset", referenced from:
_initializeStatement in FacebookSDK(FBCacheIndex.o)
"_sqlite3_step", referenced from:
-[FBCacheIndex _updateEntryInDatabaseForKey:entry:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _writeEntryInDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _fetchCurrentDiskUsage] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _removeEntryFromDatabaseForKey:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _dropTrimmingTable] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _trimDatabase] in FacebookSDK(FBCacheIndex.o)
...
ld: symbol(s) not found for architecture i386
在重新实现、清理应用程序、确保一切都在那里之后,我没有想法了。我也在另一个应用程序中实现了它,但又出现了错误。然而,来自 Facebook 的给定样本按预期工作。我在互联网上做了各种提示,但到目前为止都没有奏效。也许这里有人对 API 有所了解,并且对我有一个很好的提示:)
【问题讨论】:
-
您是否也尝试过为设备(iPhone/iPad,..)构建?尝试时是否有不同的错误消息?现在看起来有点像您正在尝试将模拟器构建与设备库链接。
-
嘿,我在 iphone 和 ipad 模拟器以及我的设备上尝试过,但错误仍然存在。
-
好的,那么...您确定您按照关于链接 SDK 的说明进行操作(应该包含在该框架中)吗?
-
只是为了确保我会再次。但是,是的,我有 99.9% 的把握!
-
错误不应该保持不变。如果确实如此,错误底部的架构应该会失败并显示
ld: symbol(s) not found for architecture armv7。