Objective-C中包装C++类

问题描述:

我有一个不使用名称空间的C++库。我想将它移植到Objective-C。问题在于两者之间的名称冲突。我希望它在Objective-C中具有与C++对象名称相同的名称。但是,我只是无法弄清楚这样做的最佳方式,而不会让它变得一团糟。我希望为此提供解决方案。Objective-C中包装C++类

+0

为什么你需要这个?有没有办法使用它,因为它是?目标平台是什么? – Keynslug 2010-10-13 06:37:55

+0

哪里可以使用objc。我试图在ObjC中打包Qt,所以我可以在Windows,Mac,Linux上使用ObjC。 NeXTstep的gui屁股很丑。所以我想要一个更性感的gui。 – zekecoma 2010-10-13 08:09:30

以与在Mac上编写框架和Apple在其框架上编写框架相同的方式为所有Objective-C类加上前缀。

+0

基础类和我试图创建的类都是前缀。 – zekecoma 2010-10-14 03:21:57

+0

对OC类使用不同的前缀。 – JeremyP 2010-10-14 08:24:09

您可以使用#define#undef暂时重命名代码中的类/函数等 - 只需确保在调用C++代码时它们是未定义的。

例如在您的包装的物管有#define Bar_Function Foo_Function,然后围绕该调用库的Bar_Function与#undef Bar_Function#define Bar_Function Foo_Function

现在,当您需要导出自己的Bar_Function唯一的问题就来了的码位...

不要这样做 - 它的愚蠢,只是解决它。 :)

+0

...或者实际上,只需使用C++开始,它就更好。 :) – jheriko 2010-10-14 20:58:21