如何将c ++项目链接到iOS应用程序项目?

时间:2018-04-17 12:30:07

标签: c++ ios swift xcode opencv

我正在尝试将this项目链接到我的iOS项目,因为所有者说它可以作为iOS应用程序的一部分进行链接,但他没有说明如何做到这一点,我添加了源代码文件和我的项目的opencv2框架然后创建桥接头文件来调用c ++函数但我不知道这是对的

我的.hpp

#ifndef LaneDetection_hpp
#define LaneDetection_hpp

#include <stdio.h>
#include "opencv2/opencv.hpp"

using namespace cv;
using namespace std;

void mainWindowCallback(int event, int x, int y, int flags, void* userdata);
int main(int argc, char** argv);

#endif /* LaneDetection_hpp */

·H

#ifdef __cplusplus
extern "C" {
#endif

void mainWindowCallback();
int main();

#ifdef __cplusplus
}
#endif

桥接-header.h

#import "LaneDetectionHeader.h"

viewController.swift

let laneDetector = main()

override func viewDidLoad() {
    super.viewDidLoad()
    session?.startRunning()
    // Do any additional setup after loading the view.
    laneDetector
}

我有这些错误

errors

  

架构arm64的未定义符号:    “LaneDetection :: Configuration :: ~Configuration()”,引自:        LaneDetection ::中的LaneDetection :: Configuration :: getInstance()    “用于LaneDetection ::配置的vtable”,引自:        在LaneDetection.o中的LaneDetection :: Configuration :: Configuration()    注意:缺少vtable通常意味着第一个非内联虚拟成员&gt;函数没有定义。    “LaneDetection :: Configuration :: setup(int,int,&gt; std :: __ 1 :: vector,std :: __ 1 :: allocator&gt;&gt ;,std :: __ 1 :: vector,&gt; std :: __ 1: :allocator&gt;&gt;,bool)“,引自:        在LaneDetection.o中的_main    “LaneDetection :: Detector :: Detector(LaneDetection :: EventsDelegate *)”,&gt;引自:        在LaneDetection.o中的_main    “vtable for Console :: ScreenEventsDelegate”,引自:        LaneDetection.o中的Console :: ScreenEventsDelegate ::〜ScreenEventsDelegate()     注意:缺少vtable通常意味着第一个非内联虚拟成员&gt;函数没有定义。    “LaneDetection :: Detector :: processFrame(cv :: Mat&amp;,int)”,引自:        在LaneDetection.o中的_main    “Console :: ScreenEventsDelegate :: ScreenEventsDelegate()”,引自&gt; from:        在LaneDetection.o中的_main    “Console :: ScreenEventsDelegate :: render(cv :: Mat&amp;)”,引自:       在LaneDetection.o中的_main   ld:找不到架构arm64的符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

我是否需要先在swift上创建相机视图?并使它将数据发送到c ++函数,因为c ++中的main需要argc,argv,我不知道如何从Swift传递这些数据,或者还有另一种方法可以使它工作。

抱歉我的英语不好。

edit1:我试图将我的项目链接到opencv框架,现在我在EventsDelegate.cpp文件中遇到了这些错误

Image

edit2:现在说在LaneDetection.cpp中使用未声明的标识符'Console'Image

我没有更改原始内容,只创建了桥接头文件并尝试调用main函数。

项目Image

中的文件

edit3:现在我从第一个Image

得到了同样的错误

0 个答案:

没有答案