2012-10-22 32 views
3

我已經添加了這些文件到我的項目:使用ASIHTTPRequest與項目,該項目採用ARC

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框架(MobileCoreServices未在我的Xcode中找到)我得到這些錯誤:

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) 

回答

0

看起來好像你還沒有包括ASI依賴的圖書館。檢出setup instructions,具體步驟2:

Link with CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics and zlib 
+0

問題更新 – hockeyman

+1

您需要添加libz.dylib和MobileCoreServices。他們絕對都應該在那裏。如果不是libz,請嘗試libz.1.2.5。 –

0

您是否包含了所有的依賴關係?因爲你沒有提到任何。 http://allseeing-i.com/ASIHTTPRequest/Setup-instructions 您應該包括CFNetwork,SystemConfiguration,MobileCoreServices,CoreGraphics和zlib。

的zlib和MobileCoreServices

通過可以包括libz.x.dylib如果你不能找到zlib的方式(我沒有zlib的自己)。你應該擁有MobileCoreServices.framework,因爲它們應該在CoreService框架中。如果沒有它,那麼你別無選擇,要爲了讓ASI工作

+0

問題已更新 – hockeyman

0

試試這個安裝一遍: - 選擇項目 - 目標 - 選擇構建階段 - 檢查ASIHTTPRequest .m文件被添加到「Link Binary with Libraries」

6

看來你在Mac OS X項目中使用ASIHttprequest。所以你需要遵循這個指示。

在Mac OS X中的項目

要在Mac的項目中使用ASIHTTPRequest使用ASIHTTPRequest,你需要進行鏈接:

  • SystemConfiguration.framework + zlib的(如上)
  • CoreServices.framework CFNetwork是Mac OS X上的CoreServices框架的一部分。除非您正在編寫基於控制檯的應用程序,否則您的應用程序可能已經設置以便與 CoreServices鏈接,但如果不是,只需按照上述方法以 的方式添加CoreServices.framework即可。

來源:http://allseeing-i.com/ASIHTTPRequest/Setup-instructions

4

你需要添加一些庫,是必需的,ASSIHTTP使用這些framworks alright.those框架是: -libz.dylib -systemConfiguration -MobileCoreServices -CFNetwork