2011-04-20 58 views
0

我已按照http://damienh.org/2009/06/20/setting-up-mgtwitterengine-with-yajl-106-for-iphone-development/的指示嘗試獲取XTode中MGTwitterEngine編譯的副本。如何使用OAuthConsumer框架編譯MGTwitterEngine?

我將YAJL安裝爲框架,OAuthConsumer作爲項目中的框架。當我嘗試和建設項目中,我得到了以下錯誤:

Ld build/Debug-iphonesimulator/UFrame.app/UFrame normal i386 
cd /Users/twhume/Documents/Projects/UFrame 
setenv MACOSX_DEPLOYMENT_TARGET 10.6 
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk -L/Users/twhume/Documents/Projects/UFrame/build/Debug-iphonesimulator -L/Users/twhume/Documents/Projects/UFrame -F/Users/twhume/Documents/Projects/UFrame/build/Debug-iphonesimulator -F/Users/twhume/Documents/Projects/UFrame -F/Users/twhume/Documents/Projects/UFrame/../../../Desktop/tmp/obj-c/OAuthConsumer/build/Release -filelist /Users/twhume/Documents/Projects/UFrame/build/UFrame.build/Debug-iphonesimulator/UFrame.build/Objects-normal/i386/UFrame.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -framework Foundation -framework UIKit -framework CoreGraphics -framework YAJLiOS -lxml2 -framework OAuthConsumer -o /Users/twhume/Documents/Projects/UFrame/build/Debug-iphonesimulator/UFrame.app/UFrame 

Undefined symbols: 
    "_OBJC_CLASS_$_OAConsumer", referenced from: 
     objc-class-ref-to-OAConsumer in MGTwitterEngine.o 
    "_OBJC_CLASS_$_OAToken", referenced from: 
     objc-class-ref-to-OAToken in MGTwitterEngine.o 
    "_OBJC_CLASS_$_OAMutableURLRequest", referenced from: 
     objc-class-ref-to-OAMutableURLRequest in MGTwitterEngine.o 
    "_OBJC_CLASS_$_OARequestParameter", referenced from: 
     objc-class-ref-to-OARequestParameter in MGTwitterEngine.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

我是比較新的Xcode的,但在我看來像一個鏈接錯誤:未被列入莫名其妙的OAuth庫。但我不確定這裏到底發生了什麼事情,並且用Google搜索回答沒有幫助。我懷疑這個問題可能是我對Xcode不熟悉,而不是其他任何東西。

我也試過從頭開始下載和構建OAuthConsumer框架,並且包括那個(而不是包括捆綁在MGTwitterEngine源代碼中的版本)。它沒有任何區別。我已經清理過,重建過了,等等。我還確保libxml2.dylib包含在我的項目目標下的「Link Binary With Libraries」組中。

關於如何解決這個問題的任何想法?

+0

檢查是否合適.m文件是在「編譯來源」目標階段。 – Eimantas 2011-04-20 10:43:55

回答

4

code.google.com上使用jdg's iPhone-ready OAuthConsumer而不是普通的MAC-準備一個嘗試

這是作爲一組文件,而不是一個框架(框架可以爲iPhone是棘手,因爲的XCode不交叉編譯)。

您應該能夠使用最新的MGTwitterEngine,而不需要對damien提出的MGTwitterYAJLParser.m進行更改(如他指出的那樣使用gabriel's YAJL),但您可以再次將源代碼包含在項目中。

祝你好運!

Adam

+0

感謝Adam - 我開始使用iPhone準備好的OAuthConsumer,並且在修復了源代碼中的一些非常明顯的拼寫錯誤之後(它沒有建立信心......)它編譯得很好:) – 2011-04-20 21:55:05

0

這解決了我的問題。我只想讓人們事先知道誰打算使用此庫來修復OAAttachment.m/.h(文件名爲OAAtachment.m/.h)中的拼寫錯誤,以及所述文件中的fileName實例變量(該變量被命名爲文件名)。

1

我也跟着亞當的建議和一個較小的編輯我不得不做出終於得到這個工作是從requestParameterWithName以下源改爲requestParameter

[request setParameters:[NSArray arrayWithObjects: 
    [OARequestParameter requestParameterWithName:@"x_auth_mode" value:@"client_auth"], 
    [OARequestParameter requestParameterWithName:@"x_auth_username" value:username], 
    [OARequestParameter requestParameterWithName:@"x_auth_password" value:password],nil]];