У меня есть значительная библиотека классов, написанная на С++. Я пытаюсь использовать их через некоторый тип моста в Swift, а не переписывать их как код Swift. Основная мотивация заключается в том, что код С++ представляет собой базовую библиотеку, которая используется на нескольких платформах. Фактически, я просто создаю пользовательский интерфейс Swift, чтобы позволить основной функциональности работать под OS X.
Возникают другие вопросы: "Как мне вызвать функцию C++ из Swift". Это не мой вопрос. Чтобы перейти к функции С++, следующее прекрасно работает:
Определите заголовок моста через "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 */
Быстрый код теперь может напрямую вызывать функции
let type = String.fromCString(imageType(filename))
let dump = String.fromCString(hexdump(filename))
Мой вопрос более конкретный. Как я могу создать экземпляр и управлять классом С++ из Swift? Кажется, я ничего не могу найти на этом.