如何使用OAuthConsumer框架编译MGTwitterEngine?

时间:2011-04-20 10:12:32

标签: iphone xcode frameworks oauth ios-frameworks

我已按照http://damienh.org/2009/06/20/setting-up-mgtwitterengine-with-yajl-106-for-iphone-development/的说明尝试在XCode中获取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库没有以某种方式包含在内。但我不确定这里到底发生了什么,谷歌搜索答案没有帮助。我怀疑这个问题可能是我对Xcode的不熟悉而不是其他任何问题。

我还尝试从头开始下载和构建OAuthConsumer框架,包括它(而不是包含与MGTwitterEngine源代码捆绑在一起的版本)。它没有任何区别。我已经清理,重建等等。我还确保libxml2.dylib包含在我的项目目标下的“Link Binary With Libraries”组中。

关于如何解决这个问题的任何想法?

3 个答案:

答案 0 :(得分:4)

尝试使用jdg's iPhone-ready OAuthConsumer代替code.google.com上的普通Mac-ready

这是作为一组文件而不是框架提供的(对于iPhone来说,框架可能很棘手,因为XCode会进行交叉编译)。

您应该能够使用最新的MGTwitterEngine,而无需对Damien提出的MGTwitterYAJLParser.m进行更改,并在他指出时使用gabriel's YAJL,但您可以再次在项目中包含源代码。

祝你好运!

亚当

答案 1 :(得分:1)

我遵循了Adam的建议,我必须做的一个小编辑才能最终实现这一目标,即将以下来源从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]];

答案 2 :(得分:0)

这解决了我的问题。我只是想让人们提前知道谁打算使用这个库修复OAAttachment.m / .h中的拼写错误(文件名为OAAtachment.m / .h),以及所述文件中的fileName实例变量(变量名为filename)。