0

我已按照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”组中。

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

4

3 回答 3

4

尝试在 code.google.com 上使用jdg 的 iPhone-ready OAuthConsumer而不是普通的 Mac- ready OAuthConsumer

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

您应该能够使用最新的 MGTwitterEngine,而无需对MGTwitterYAJLParser.m建议的 damien 进行更改——并使用gabriel 的 YAJL,正如他所指出的那样,但您可以再次将源代码包含在您的项目中。

祝你好运!

亚当

于 2011-04-20T20:51:34.330 回答
1

我听从了亚当的建议,我必须做的一个小修改才能最终完成这项工作,就是将以下来源从更改requestParameterWithNamerequestParameter

    [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]];
于 2011-10-26T16:23:05.707 回答
0

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

于 2011-05-27T17:39:21.073 回答