做一個C++函數調用的時候,我試圖在XCode中創建一個項目來訪問OpenCV的框架與基於雨燕應用程序最終使用。未定義的符號:在XCode中8
在高層次上,我有C++,它與一個C++結合界面OpenCV的框架。然後,一個Objective-C類包裝綁定,以便我的Swift代碼可以訪問它。
然而,當一切都在編輯器工作正常,當我去編譯它,我收到以下錯誤,因爲我已經在我的綁定類中定義的每個C++函數。從引用的 「庫::乘()」, :用於建築x86_64的
未定義符號+ [視圖控制器乘]在ViewController.o
以下是我的項目的縮寫版本來說明問題。
首先,受影響的文件:
正如你所看到的,我有我的封裝文件(ViewController.mm
)適當的後綴。
ViewController.mm內容:
#import "ViewController.h"
#import "library.hpp"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"Number: %f", Library().multiply());
}
@end
library.hpp內容:
#pragma once
#include <stdio.h>
class Library {
public:
Library();
~Library();
double multiply();
};
library.cpp內容:
#include "library.hpp"
Library::Library() { }
Library::~Library() { }
double multiply() {
return 1.0 * 2.0;
}
相關到C生成設置++:
** **修訂
發表哈里什古普塔答案當然是正確的,並沒有解決我的問題。然而,我進一步調查並提出了我認爲更好的解決方案,這是爲我的C++類創建一個名稱空間,然後使用using
命令將其拖入我的.mm
文件中。
我要笑,我正要張貼了同樣的答案,正如我剛纔固定它,但會接受你的 - 謝謝! – CodeBender