0

当我使用 Objective-C++ 编译我的代码时,函数 NSStringFromPoint 消失了,但在 Objective-C 下它很好。

如何让 Objective-C++ 看到该功能?

如果我在 Objective-C++ 下编译它会说:

error: 'NSStringFromPoint' was not declared in this scope
error: 'NSStringFromRect' was not declared in this scope
error: 'NSEqualSizes' was not declared in this scope
4

2 回答 2

3

如果我错了,有人可以纠正我,但如果你链接的是 iPhone SDK,则没有 NSPointor NSStringFromPoint。UIKit使用 Core Graphics 结构CGPoint和. 等效函数是.CGSizeCGRectNSStringFromCGPoint

模拟器库与 iPhone 库并不完全匹配——我相当肯定为模拟器链接编译的应用程序与 Mac 自己的 Foundation.framework 链接。例如,我在 2.0 之前的日子里浪费了很多时间,以为它NSXMLDocument可以在 iPhone 上使用,因为它在模拟器中编译和运行。

于 2010-05-12T15:05:01.013 回答
1

我编译了这个简单的应用程序:

#include <Cocoa/Cocoa.h>
int main (void)
{
    NSLog (@"%@", NSStringFromPoint(NSMakePoint(10, 10));
    return 0;
}

使用此命令行:

gcc -x objective-c++ test.mm -framework Cocoa -lstdc++

我得到了这个输出(忽略关于没有自动释放池的错误):

2010-05-12 12:41:33.946 a.out[290:10b] {10, 10}

确保您包含正确的标题,至少,确保您正在导入<Foundation/Foundation.h>. #import <Foundation/Foundation.h>如果已包含显式,则不会造成任何伤害。

于 2010-05-12T03:00:01.880 回答