Objective-CからC++コードを呼び出す
どもどもです。
今回は、突然ながらMacに関係する投稿です。
ソフト関係のことを勉強していて、突然Macメインの生活になり、さらにその中でMacのデスクトップツールの開発に興味が向いたので書きます。
これまでの勉強の中で作成した内容(数学の計算)をC++で実装し、さらにMacのデスクトップツールを作成する際に使用したい、というのが目標です。
1.開発環境
まず、開発に使用するMacおよび開発環境のスペックです。
MAC | MacBook Air 13-inch, Mid 2012 |
---|---|
プロセッサ(CPU) | MacBook Air Intel Core i7 |
メモリ | 8GB |
ID(統合開発環境) | Xcode Version 6.4 |
2). 作ってみた
作成するツールは、もちろん「Hello, World!」です。
コマンドラインツールです。
実際のコードは、コレ!
#include "CHello.h"
#include <iostream>
using namespace std;
void CHello::HelloFnc() {
cout << "Hello, world!" << endl;
}
#ifndef __CppCallSample__CHello__
#define __CppCallSample__CHello__
class CHello {
public:
CHello() {}
~CHello() {}
void HelloFnc();
};
#endif /* defined(__CppCallSample__CHello__) */
#import <Foundation/Foundation.h>
#include "CHello.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
CHello *hello = new CHello();
hello->HelloFnc();
delete hello;
}
return 0;
}
Xcodeの新規ウィザードに従って作成したプロジェクトとコードです。
しかし、この段階でビルドを実行しますと、エラーが発生します。
エラーの内容は、
「xxx/CHello.h:12:1: Unknown type name 'class’; did you mean 'Class’?」
「xxx/main.m:16:25: Use of undeclared identifier 'new’」
というもの。
(同じ内容が、今回の場合には「8個」出現しまいた。)
エラーの内容ですが、ざっくり言うと
「class?Classじゃねーの!?」
「new?知らねーよ!」
です。
1つ目はともかく、2つ目が問題です。
new演算子が使えない、ということになります。
この問題が解決できないと、C++のコードが使用できない、ということになります。
3.new演算子を使用するために
仰々しく書いていますが、対応作は非常に簡単です(でした)。
ソースコードの「扱い」の設定を変更するだけでOKです。
どの設定を変更するかですが、「main.m」のUtilitiesランチャー(Xcode画面の右側)の「Identity and Type」(ランチャーの一番上)の「Type」です。
デフォルトでは、この設定は「Objective-C Source」となっています。
これを「Objective-C++ Source」に変更します。
この状態で再度ビルドを実行すると、ビルドは成功します。
4.いざ実行
実行する際には、ターミナルを起動してバイナリがあるディレクトリに移動して実行です。
今回の私の環境では、「CppCallSample」というバイナリが生成されますので、ターミナル上で
「./CppCallSample」
と打てば、
「Hello, World!」
が表示されます。
5.まとめ
以上、これまでの投稿とは全く毛色の違う内容になってしまいました。
それでも誰かの参考・助けになればと思います。
ではっ!
ディスカッション
コメント一覧
まだ、コメントがありません