相关疑难解决方法(0)

与Swift中的C++类进行交互

我有一个用C++编写的重要类库.我试图通过Swift中的某种类型的桥来使用它们,而不是将它们重写为Swift代码.主要动机是C++代码表示在多个平台上使用的核心库.实际上,我只是创建一个基于Swift的UI,以允许核心功能在OS X下工作.

还有其他问题,"如何从Swift调用C++函数." 这不是我的问题.要桥接到C++函数,以下工作正常:

通过"C"定义桥接头

#ifndef ImageReader_hpp
#define ImageReader_hpp

#ifdef __cplusplus
extern "C" {
#endif

    const char *hexdump(char *filename);
    const char *imageType(char *filename);

#ifdef __cplusplus
}
#endif

#endif /* ImageReader_hpp */
Run Code Online (Sandbox Code Playgroud)

Swift代码现在可以直接调用函数

let type = String.fromCString(imageType(filename))
let dump = String.fromCString(hexdump(filename))
Run Code Online (Sandbox Code Playgroud)

我的问题更具体.如何在Swift中实例化和操作C++类?我似乎无法找到任何关于此的内容.

c++ swift

71
推荐指数
5
解决办法
4万
查看次数

在 Objective-C++ 的 .h 文件中添加指向定义的 Objective-C 类的指针

是否可以在 Objective-C++ 中创建具有指向 Objective-C 接口(在文件内.h)的指针的字段的类?

为了澄清一点,我创建了一个 Objective-C 接口:

// Our platform independent class
@interface LoggerDelegate : NSObject<SomeDelegate>
@end
Run Code Online (Sandbox Code Playgroud)

我可以在文件内创建它.mm并且它可以工作,但它适用于全局变量,并且不允许我更改其范围。所以我想在里面使用它Logger.h

class Logger {
public:

private:

LoggerDelegate* _ptr;   //<--- pointer to the Objective-C interface
};
Run Code Online (Sandbox Code Playgroud)

当我在里面定义我的界面时,Logger.mm它就可以工作了。但是是否可以将 Objective-C 和 C++.h文件内的 Objective-C++ 代码合并到一起?或者只能在.mm文件中进行?

c++ macos cross-language objective-c objective-c++

1
推荐指数
1
解决办法
848
查看次数

标签 统计

c++ ×2

cross-language ×1

macos ×1

objective-c ×1

objective-c++ ×1

swift ×1