2012-02-29 168 views
0

我正在使用Stephen Kochan的书学习Objective-C和XCode。对于其中一项任务,我需要从命令行实现AddressBook查找功能。我使用了以前项目中的两个类,添加了这些文件并且没有复制。所有建立在XCode的很好,但是当我在命令行发出以下命令:clang错误:连接器命令失败,XCode 4.2命令行应用程序

clang -fobjc-arc -framework Foundation main.m -o ch19

我得到的错误:

 
Undefined symbols for architecture x86_64: 
    "_OBJC_CLASS_$_AddresBook", referenced from: 
     objc-class-ref in cc-bx2cgt.o 
    "_OBJC_CLASS_$_AddressCard", referenced from: 
     objc-class-ref in cc-bx2cgt.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

在AddresBook没有错字,我的类名有一个“的”。我尝试从我的项目中删除这些文件(AddresBook.h和.m以及AddressCard.h和.m),并在不复制的情况下添加它们。在XCode中构建和运行应用程序工作得很好。

如何“清除”引用并再次添加它们以便我可以从命令行编译它?

谢谢。

回答

2

您需要添加那些其他文件对象代码。

clang -fobjc-arc -framework Foundation main.m AddressBook.m -o ch19或将它们编译为目标文件然后进行链接。

如果您想在命令行上执行此操作,您还应该使用xcodebuild。

+0

我添加了文件,但它仍然无法正常工作。有没有办法告诉编译器完全忘记这些文件,并使用其他的(它们是相同的,代码方式)? – Eugene 2012-02-29 20:34:35

+0

您是否使用命令行中的xcodebuild? – 2012-02-29 20:54:11

+0

我现在,+1的建议,它正在工作。如果我没有得到任何其他解决方案来解决“叮当声”构建过程,我会接受您的答案。非常感谢! – Eugene 2012-02-29 21:14:25

相关问题