Я пытаюсь использовать пользовательский код C ++ в проекте Swift.
У меня есть два проекта в рабочей области: статическая библиотека с кодом C ++:
// display_recognition.h
int getNumeralSegment_CPP(unsigned char *image, const int width, const int height, unsigned char *output, const int displayWidth, const int displayHeight, const int rotateHeight, float *separators);
Оболочка Obj-CКод C ++:
#import "iOS_display_recognition.h"
#include "../display_recognition//display_recognition.h"
@implementation iOS_display_recognition
+ (int)getImageNumeralSegment:(unsigned char *)image :(const int)width :(const int)height :(unsigned char *)output :(const int)displayWidth :(const int)displayHeight :(const int)rotateHeight :(float *)separators {
return getNumeralSegment_CPP(image, width, height, output, displayWidth, displayHeight, rotateHeight, separators);
}
@end
и проект приложения с кодом Swift:
let err = iOS_display_recognition.getImageNumeralSegment(time, Int32(cgimg.width), Int32(cgimg.height), numbers, 960, 415, 270, ptrSeparators)
Я связал их в XCode, добавил ссылки на заголовки в настройках сборки и включил заголовок моста.
Он проходит проверки компилятором, но когда я пытаюсь построить проект, появляется следующая ошибка:
Неопределенные символы для архитектуры arm64:
"_ getNumeralSegment_CPP", на которую ссылается:
+ [iOS_display_recognition getImageNumeralSegment ::::::::] в libiOS_display_recognition.a (iOS_display_recognition.o)
ld: символы не найдены для архитектуры arm64
clang: ошибка: команда компоновщика завершилась неудачно с кодом выхода 1 (используйте -v, чтобы увидеть вызов)
Существует некоторая магия C ++ для obj-C, но я не могу найти четких ссылок на то, как это сделать.