使用ASIHTTPRequest和使用ARC的项目

时间:2012-10-22 14:51:14

标签: objective-c facebook macos asihttprequest

我已将这些文件添加到我的项目中:

ASICacheDelegate.h
ASIDataCompressor.h
ASIDataCompressor.m
ASIDataDecompressor.h
ASIDataDecompressor.m
ASIDownloadCache.h
ASIDownloadCache.m
ASIFormDataRequest.h
ASIFormDataRequest.m
ASIHTTPRequest.h
ASIHTTPRequest.m
ASIHTTPRequestConfig.h
ASIHTTPRequestDelegate.h
ASIInputStream.h
ASIInputStream.m
ASINetworkQueue.h
ASINetworkQueue.m
ASIProgressDelegate.h

然后在项目的构建阶段添加-fno-objc-arc,因为我的项目使用ARC而ASIHTTPRequest是在不使用它的情况下编写的。当我尝试编译我的项目时,我得到了这些错误:

Undefined symbols for architecture x86_64:
  "_SCDynamicStoreCopyProxies", referenced from:
      -[ASIHTTPRequest configureProxies] in ASIHTTPRequest.o
  "_deflate", referenced from:
      -[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
  "_deflateEnd", referenced from:
      -[ASIDataCompressor closeStream] in ASIDataCompressor.o
  "_deflateInit2_", referenced from:
      -[ASIDataCompressor setupStream] in ASIDataCompressor.o
  "_inflate", referenced from:
      -[ASIDataDecompressor uncompressBytes:length:error:] in ASIDataDecompressor.o
  "_inflateEnd", referenced from:
      -[ASIDataDecompressor closeStream] in ASIDataDecompressor.o
  "_inflateInit2_", referenced from:
      -[ASIDataDecompressor setupStream] in ASIDataDecompressor.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我想用ASIHTTPRequest做什么:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/me/photos?access_token=%@", access_token]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request addFile:@"/Users/development/Desktop/12t.png" forKey:@"file"];
[request setPostValue:[NSString stringWithFormat:@"This is a test."] forKey:@"message"];
[request startAsynchronous];

如果我添加CoreGraphics,zlib,CFNetwork和SystemConfiguration框架(我的Xcode中找不到MobileCoreServices),我会收到以下错误:

Undefined symbols for architecture x86_64:
  "_Gestalt", referenced from:
      -[oglView(checkOSXVersion) checkForOSVersion:] in oglView+checkOSXVersion.o
      +[ASIHTTPRequest defaultUserAgentString] in ASIHTTPRequest.o
  "_UTTypeCopyPreferredTagWithClass", referenced from:
      +[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
  "_UTTypeCreatePreferredIdentifierForTag", referenced from:
      +[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
  "_kUTTagClassFilenameExtension", referenced from:
      +[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
  "_kUTTagClassMIMEType", referenced from:
      +[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

5 个答案:

答案 0 :(得分:6)

您似乎在Mac OS X项目中使用ASIHttprequest。所以你需要遵循这个指示。

  

在Mac OS X项目中使用ASIHTTPRequest

     

要在Mac项目中使用ASIHTTPRequest,您需要链接:

     
      
  • SystemConfiguration.framework + zlib(如上所述)
  •   
  • CoreServices.framework CFNetwork是Mac OS X上CoreServices框架的一部分。除非您正在编写基于控制台的   应用程序,您的应用程序可能已设置为链接   CoreServices,但如果没有,只需添加CoreServices.framework即可   与上述相同。
  •   

来自:http://allseeing-i.com/ASIHTTPRequest/Setup-instructions

答案 1 :(得分:4)

你需要添加一些必需的库,而ASSIHTTP正在使用这些framworks。这些框架是: -libz.dylib -系统配置 -MobileCoreServices -CFNetwork

答案 2 :(得分:0)

好像你没有包含ASI所依赖的库。查看setup instructions,特别是第2步:

Link with CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics and zlib

答案 3 :(得分:0)

您是否包含了所有依赖项?因为你没有提到任何。 http://allseeing-i.com/ASIHTTPRequest/Setup-instructions 您还应该包括CFNetwork,SystemConfiguration,MobileCoreServices,CoreGraphics和zlib。

  

zlib和MobileCoreServices

顺便提一下,如果找不到zlib,我可以包含libz.x.dylib(我自己没有zlib)。你应该有MobileCoreServices.framework,因为它们应该在CoreService框架中。如果您没有它,那么您无法再次安装它以使ASI正常工作

答案 4 :(得分:0)

试试这个: - 选择项目 - 目标 - 选择Build Phases - 检查是否在“Link Binary with Libraries”

中添加了ASIHTTPRequest .m文件