我有一个大量的用C ++编写的类库。我试图通过Swift内的某种桥接来利用它们,而不是将它们重写为Swift代码。主要动机是C ++代码表示一个在多个平台上使用的核心库。实际上,我只是在创建一个基于Swift的UI,以允许核心功能在OS X下工作。还有其他问题,“如何从Swift调用C ++函数”。这不是我的问题。要桥接到C ++函数,以下工作正常:通过“ C”定义桥接头#ifndef ImageReader_hpp#define ImageReader_hpp#ifdef __cplusplusextern "C" {#endif const char *hexdump(char *filename); const char *imageType(char *filename);#ifdef __cplusplus}#endif#endif /* ImageReader_hpp */Swift代码现在可以直接调用函数let type = String.fromCString(imageType(filename))let dump = String.fromCString(hexdump(filename))我的问题更具体。如何在Swift中实例化和操作C ++类?我似乎找不到任何发布的内容。
3 回答
慕森王
TA贡献1777条经验 获得超3个赞
正如提到的另一个答案,使用ObjC ++进行交互要容易得多。只需将文件命名为.mm而不是.m和xcode / clang,即可访问该文件中的c ++。
请注意,ObjC ++不支持C ++继承。我想在ObjC ++中继承c ++类,但是不能。您将不得不用C ++编写子类,并将其包装在ObjC ++类中。
然后使用通常用于从swift调用objc的桥接头。
- 3 回答
- 0 关注
- 622 浏览
添加回答
举报
0/150
提交
取消