Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在编写CodeRunner文档时,如何包含非框架库?_Objective C_Cocoa_Coderunner - Fatal编程技术网

Objective c 在编写CodeRunner文档时,如何包含非框架库?

Objective c 在编写CodeRunner文档时,如何包含非框架库?,objective-c,cocoa,coderunner,Objective C,Cocoa,Coderunner,我一直用它来收集开发过程中经常使用但不一定属于项目代码库的小代码块。这是用Objective-C和Cocoa进行总结的一个很好的工具,因为我可以包含安装在我的机器上的框架 但是,有时我希望包含来自非框架的外部源的功能,例如ASIHTTPRequest。如果我将ASIHTTPRequest文件放在附近的一个文件夹中,并包含它们,我会得到关于“架构x86未定义符号64:_OBJC_CLASS_$\u ASIHTTPRequest”的错误,我假设这意味着ASI文件根本没有被编译,也没有与CodeRun

我一直用它来收集开发过程中经常使用但不一定属于项目代码库的小代码块。这是用Objective-C和Cocoa进行总结的一个很好的工具,因为我可以包含安装在我的机器上的框架

但是,有时我希望包含来自非框架的外部源的功能,例如ASIHTTPRequest。如果我将ASIHTTPRequest文件放在附近的一个文件夹中,并包含它们,我会得到关于“架构x86未定义符号64:_OBJC_CLASS_$\u ASIHTTPRequest”的错误,我假设这意味着ASI文件根本没有被编译,也没有与CodeRunner文档链接-这是一个正在编译的文件,不是一个项目。在Xcode中,我会将ASIHTTPRequest文件添加到项目中,它们会自动编译并与代码的其余部分链接,当我不使用Xcode时,它们的等效性是什么


我可以包括自定义参数和编译标志(后者默认包含
-std=c99-framework Foundation
),我怀疑我必须以某种方式调整这些参数和标志,但我还没有找到如何进行调整的方法。

我让它工作起来了。当然,gcc需要一些额外的参数来链接到ASIHTTP模块。以下是我最终得到的结果:

-std=c99 -framework SystemConfiguration -framework CoreServices -framework Foundation -lz -I/path/to/asi-header-files -filelist /path/to/list-of-asi-compiled-modules
我想你的代码只是包含了ASIHTTPRequest.h等头文件的路径。。。如果在那里使用显式路径,则不需要上面的-I开关。gcc确实需要从ASIHTTPRequest.m和friends获得编译版本的代码才能链接到它。一种方法是编译库附带的“Mac”项目。这将在Xcode喜欢制作的一个深埋的“DerivedData”目录中生成.o文件。它为我做的是:

~/Library/Developer/Xcode/DerivedData/Mac-flsjygxmngizhzfwnfgcakejmwkx/Build/Intermediates/Mac.build/Debug/Mac.build/Objects-normal/x86_64
(我想,“Mac-flsjgygxmngizhzfwnfgcakejmwkx”位对您来说会有所不同。)在该目录中,有一堆.o文件和一个“Mac.LinkFileList”文件。这个文件是您为gcc提供的-filelist参数。您需要删除对main.o、AppDelegate.o和asiwebagerequest.o文件的引用,以便在链接步骤中不会出现重复的符号错误

除了ASIHTTPRequest头文件和.o文件外,gcc还希望与SystemConfiguration、CoreServices框架和zlib库链接,因为ASIHTTPRequest具有这些依赖关系

如果您正在使用这个库进行大量测试,我建议将“Objective-C”语言定义(在“首选项”下)复制为“Objective-C with ASIHTTPRequest”之类的内容。然后,您可以自定义编译标志,以便针对ASIHTTPRequest运行,而无需对您运行的所有Objective-C代码执行此操作


您可能还想将.o文件和“LinkFileList”文件复制到一个更永久的位置,以防Xcode清除了构建树或其他东西。

+1获取CodeRunner的链接,很酷的应用程序。谢谢!你的参数99%都在那里,但我在main()的重复定义和ASIWebPageRequest的错误方面遇到了错误。我从链接文件列表中编辑了main.o、AppDelegate.o和ASIWebPageRequest.o的链接,现在一切都很好!也许你建立了一个不同的ASIHTTPRequest mac项目?啊,是的。。。我也不得不这么做。对不起,我忘了提那一步。