![見出し画像](https://assets.st-note.com/production/uploads/images/14649815/rectangle_large_type_2_477bbd9166229e72faaf518e901157a9.png?width=1200)
iOSでEigenを利用する
iOSでEigenを利用する方法を説明します。
1. Eigen
C++にはデファクトスタンダードな行列計算ライブラリとして「Eigen」があります。ヘッダのみのライブラリなのでプロジェクトに組み込みやすく、計算も速いです。
2. セットアップ
(1)公式サイトからEigenをダウンロード。
今回は、「Eigen 3.3.7 released!」の「zip」をダウンロードして解凍します。
(2)フォルダ名を「eigen_3.3.7」に変更し、プロジェクトに追加。
(3)Xcodeの「Build Settings → Header Search Paths」に、フォルダのパスを追加。
"$(SRCROOT)/HelloSwift/eigen_3.3.7"
3. ラッパークラスの作成
Eigenが正しく追加されたことをテストするために、ライブラリクラスを報告するラッパークラスを作成します。
(1)Xcodeのメニュー「File → New → File」で「iOS」の「Cocoa Touch Class」を選択し、Class「EigenWrapper」とLanguage「Objective-C」でファイルを生成。
(2)Xcodeに以下のようなポップアップが表示されるので、[Create Bridging Header]をクリック。
これにより、プロジェクトに以下の3つのファイルが生成されます。
・EigenWrapper.h
・EigenWrapper.m
・<プロジェクト名>-Bridging-Header.h(ブリッジングヘッダー)
(3)「EigenWrapper.h」を次のように編集。
#import <UIKit/UIKit.h>
@interface EigenWrapper : NSObject
+ (NSString *)eigenVersionString;
@end
(4)「EigenWrapper.m」を「EigenWrapper.mm」に名前変更して、次のように編集。
「C++」を使用するには、拡張子を「mm」とします。
#import <Eigen/Core>
#import "EigenWrapper.h"
@implementation EigenWrapper
//バージョンの取得
+ (NSString *)eigenVersionString {
return [NSString stringWithFormat:@"Eigen Version %d.%d.%d",
EIGEN_WORLD_VERSION, EIGEN_MAJOR_VERSION, EIGEN_MINOR_VERSION];
}
@end
(5)「<プロジェクト名>-Bridging-Header.h」を次のように編集。
Xcodeは「Bridgeging Header」を使用して、Object-C-Swift間で接続します。
#import "EigenWrapper.h"
4. 動作確認
「AppDelegate.swift」で先ほど追加したeigenVersionString()を呼び出します。
//アプリ起動時に呼ばれる
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
print("eigen: ", EigenWrapper.eigenVersionString()!)
return true
}
成功すると、コンソールログに次のようにバージョンが表示されます。
eigen: Optional("Eigen Version 3.3.7")
この記事が気に入ったらサポートをしてみませんか?