体系结构的未定义符号x8664:当在xCoC 8中调用C++函数时

体系结构的未定义符号x8664:当在xCoC 8中调用C++函数时,c++,C++,我试图在Xcode中创建一个项目来访问OpenCV框架,以便最终与基于Swift的应用程序一起使用 在高级别,我有C++中的OpenCV框架,它与C++绑定接口。然后,Objective-C类包装绑定,以便我的Swift代码可以访问它 但是,当编辑器中的每一件工作都很好的时候,当我编译它时,对于绑定类中定义的每个C++函数,我会收到以下错误。 架构x86_64的未定义符号:库::乘法, 引用自:ViewController.o中的+[ViewController multiply] 下面是我的项

我试图在Xcode中创建一个项目来访问OpenCV框架,以便最终与基于Swift的应用程序一起使用

在高级别,我有C++中的OpenCV框架,它与C++绑定接口。然后,Objective-C类包装绑定,以便我的Swift代码可以访问它

但是,当编辑器中的每一件工作都很好的时候,当我编译它时,对于绑定类中定义的每个C++函数,我会收到以下错误。 架构x86_64的未定义符号:库::乘法, 引用自:ViewController.o中的+[ViewController multiply]

下面是我的项目的一个缩略版本来说明这个问题

首先,受影响的文件:

如您所见,我的包装文件ViewController.mm上有正确的后缀

ViewController.mm内容:

#import "ViewController.h"
#import "library.hpp"

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"Number: %f", Library().multiply());
}

@end
#pragma once
#include <stdio.h>

class Library {
public:
    Library();
    ~Library();
    double multiply();
};
#include "library.hpp"

Library::Library() { }

Library::~Library() { }

double multiply() {
    return 1.0 * 2.0;
}
library.hpp目录:

#import "ViewController.h"
#import "library.hpp"

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"Number: %f", Library().multiply());
}

@end
#pragma once
#include <stdio.h>

class Library {
public:
    Library();
    ~Library();
    double multiply();
};
#include "library.hpp"

Library::Library() { }

Library::~Library() { }

double multiply() {
    return 1.0 * 2.0;
}
与C++相关的生成设置:

**更新**


哈里什·古普塔(Harish Gupta)给出的答案肯定是正确的,并且解决了我的问题。但是,我进一步研究了,我觉得我在这方面是一个更好的解决方案,它是为我的C++类创建一个命名空间,然后用一个使用命令将它拉进我的.mm文件。

< p>你没有定义作为这个问题的类函数的乘法。 声明如下:

double Library::multiply() {
return 1.0 * 2.0;
}

您尚未将乘法定义为导致此问题的类函数。 声明如下:

double Library::multiply() {
return 1.0 * 2.0;
}