C ++在XCode 4.2中没有编译(链接?)

时间:2011-11-16 14:14:04

标签: c++ objective-c xcode osx-lion objective-c++

我在Xcode中有一个非常小的程序,只显示标签并在viewWillAppear方法中更改标签的文本。 label.text应该来自一个C ++库,其函数如下:

int getNumber(){
    return 42;
}

问题是,在我的* .mm(!)类中包含 #import“TestLibMain.h”的类并使用

的函数
TestLibMain *tlb = new TestLibMain();
int myInt = tlb->getNumber();
NSString *myString = [NSString stringWithFormat:@"%d",myInt];

不会调用编译器错误,而是调用链接器错误:

架构i386的未定义符号:   “TestLibMain :: getNumber()”,引自:     - tbViewController.o中的[tbViewController buttonPressed:] ld:找不到架构i386的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

我的印象是,cpp-class尚未编译。

我尝试了很多东西,但某个地方却悬而未决。它都在同一个目录中,我使用.mm扩展名,一切都很好,但总是这个链接器错误。变得疯狂: - )

Mac OS X Lion,XCode 4.2

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

int getNumber() {
    return 42;
}

.cpp.mm中定义getNumber()作为免费功能。这样:

int TestLibMain::getNumber() {
    return 42;
}

getNumber()定义为TestLibMain的成员。