我在要导出的 Cocoa 框架中创建了一个函数。这个函数是在 ObjectiveC++ 中实现的,C++ 的名字修饰让我发疯。
我已经在 extern "C" 块中声明了该函数,但无济于事。
这是我在框架中的头文件:
#import <Cocoa/Cocoa.h>
extern "C"{
void display(NSString *text);
}
@interface Display : NSObject
@end
这是 .mm 文件:
#import "Display.h"
#include <string>
#include <iostream>
using namespace std;
void display(NSString *text){
cout << [text cStringUsingEncoding:NSUTF8StringEncoding] << endl;
}
@implementation Display
@end
它编译得很好,没有任何错误。
在客户端,我添加了框架,导入了暴露的标头并尝试调用该函数:
display(@"Hola");
在这里,我收到一条警告,抱怨“函数显示的隐式声明在 C99 中无效”。
雪上加霜的是,在暴露的头文件中,我在 extern "C" 行中收到一个错误(未出现在框架项目中):
"预期标识符或 ("
要让这一切顺利进行还需要什么?