Как я могу скомпилировать MGTwitterEngine, используя платформу OAuthConsumer? - PullRequest
0 голосов
/ 20 апреля 2011

Я следовал инструкциям на http://damienh.org/2009/06/20/setting-up-mgtwitterengine-with-yajl-106-for-iphone-development/, чтобы попытаться получить копию компиляции MGTwitterEngine в XCode.

У меня 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 Framework с нуля и включить его (вместо того, чтобы включать версию, связанную с исходным кодом MGTwitterEngine). Это не имело никакого значения. Я убрал, перестроил и так далее. Я также гарантировал, что libxml2.dylib включен в группу «Link Binary With Libraries» под целью моего проекта.

Есть идеи, как это решить?

Ответы [ 3 ]

4 голосов
/ 21 апреля 2011

Попробуйте использовать готовый для iPhone OAuthConsumer от jdg вместо простого Mac-ready на code.google.com

Это предоставляется в виде набора файлов, а не фреймворка (каркасовможет быть сложно для iPhone, так как XCode выполняет кросс-компиляцию).

Вы должны иметь возможность использовать последнюю версию MGTwitterEngine без внесения изменений в MGTwitterYAJLParser.m, предложенных Дэмиеном, - и использовать YAJL Габриеля1009 *, как он указывает, но вы можете снова включить источник в свой проект.

Удачи!

Адам

1 голос
/ 26 октября 2011

Я последовал совету Адама, и одним небольшим редактированием, которое я должен был сделать, чтобы наконец получить эту работу, было изменение следующего источника с 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]];
0 голосов
/ 27 мая 2011

Это исправило мою проблему.Я просто хочу заранее сообщить людям, которые намерены использовать эту библиотеку для исправления опечаток в OAAttachment.m / .h (имя файла - OAAtachment.m / .h), а также переменной экземпляра fileName в указанных файлахпеременная называется имя файла).

...