我在 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 的 undefined symbol : “TestLibMain::getNumber()”,引用自: -[tbViewController buttonPressed:] 在 tbViewController.o ld:未找到架构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
我的印象是,cpp 类尚未编译。
我尝试了很多东西,但它卡在某个地方。它们都在同一个目录中,我使用 .mm 扩展名,一切正常,但总是出现此链接器错误。变得疯狂:-)
Mac OS X 狮子,XCode 4.2
有什么想法吗?
最佳答案
int getNumber() {
return 42;
}
在 .cpp
或 .mm
中将 getNumber()
定义为自由函数。这:
int TestLibMain::getNumber() {
return 42;
}
将 getNumber()
定义为 TestLibMain
的成员。
关于C++ 在 XCode 4.2 中不编译(链接?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153043/