2009-10-23 85 views
0

所以我仍然感觉像一个新手有时奇怪的错误跳出XCode。昨天我开始这样的:Objective-C与CPP扩展,我不知道我在做什么

___gxx_personality_v0" ,从引用:___ gxx_personality_v0 $ non_lazy_ptr

,建设,在与iPhoneSDK的XCode使用的.mm文件中的单元测试的目标是什么时候当我将文件扩展名更改回.m时,错误消失了,因为我还没有使用C++代码(虽然我打算这么做。)由于我的知识有限,我搜索了一下并看到其他人指出正在使用错误的编译器。另一个链接指的是一个国旗被错误地设置。更有限的知识我德单元测试目标中的链接器选项是要去的地方。事实证明标准C++库类型设置默认设置为动态。将此设置更改为静态会让我的错误消失,现在我的测试绿条...错误...绿色按钮。我在这里问,因为我仍然不知道我在做什么。显然这个设置会影响编译器,但我需要更多的细节。我是否正在为自己的另一个灾难而努力?如果有的话,会有什么负面影响?为什么我之前没有遇到问题?我已经在单元测试中使用过.mm文件,但我相信我之后使用GoogleToolsForMac代码库进行单元测试,现在我使用本机XCode支持进行单元测试。有人能为我解释吗?

回答

0

简短回答:发生此错误是因为您使用gcc驱动程序而不是g++编译C++代码。

较长的答案:当你调用gcc myfile.mm,GCC驱动器是足够聪明的,你编译的Objective-C++代码.mm文件扩展名来识别,因此它编译得很好。但是,在链接时,如果仍然使用gcc作为驱动程序(也许是一步编译和链接?),它不会自动链接到C++标准库(和支持对象文件),因此无法链接。

+0

我有点undeerstand,但是这怎么适用于XCode?我没有设置任何驱动程序,gcc或g ++。我只需点击构建按钮。 (称我为无知。)XCode中是否有构建设置以告诉它何时使用哪个驱动程序? – Cliff 2010-03-15 13:29:00

+0

它应该从一个。文件扩展名('.mm')和b。你创建的文件的类型(文件>新建> C++类,或类似的东西)。 – 2010-03-15 14:06:54

相关问题