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