Как выставить код C ++ в библиотеке Cocoa-touch - PullRequest
2 голосов
/ 30 апреля 2019

Я пытаюсь использовать пользовательский код 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, но я не могу найти четких ссылок на то, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...