私はSwCベースのアプリケーションで最終的に使用するためにOpenCVフレームワークにアクセスするためにXCodeでプロジェクトを作成しようとしています。アーキテクチャx86_64の未定義のシンボル:XCode 8のC++関数を呼び出すとき
私はOpenCVフレームワークをC++で持ち、C++バインディングとインターフェイスしています。次に、Objective-Cクラスがバインディングをラップして、Swiftコードがそれにアクセスできるようにします。
しかし、エディタですべてうまく動作しますが、コンパイルすると、バインディングクラスで定義した各C++関数に対して次のエラーが発生します。アーキテクチャx86_64のため
未定義シンボル: "ライブラリ::乗算()"、 から参照:+ [のViewControllerは、乗算] 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内容:C++に関連する
#include "library.hpp"
Library::Library() { }
Library::~Library() { }
double multiply() {
return 1.0 * 2.0;
}
ビルド設定:
**ハリッシュグプタによって投稿
答えは確かに正しい、と私の問題を解決しました**更新しました。しかし、私はさらに調査し、C++クラスのネームスペースを作成し、それをusing
コマンドで私の.mm
ファイルにプルすることで、これに対してより良い解決策であると思いました。
を私は笑うしなければならない、私はちょうどそれを修正してきたように、同じ答えを投稿するちょうど約だったが、あなたを受け入れます - ありがとう! – CodeBender