*

Objective-CからC++コードを呼び出す

公開日: : 最終更新日:2016/05/06 C++, Mac, Objective-C, 開発

どもどもです。
今回は、突然ながらMacに関係する投稿です。

ソフト関係のことを勉強していて、突然Macメインの生活になり、さらにその中でMacのデスクトップツールの開発に興味が向いたので書きます。
これまでの勉強の中で作成した内容(数学の計算)をC++で実装し、さらにMacのデスクトップツールを作成する際に使用したい、というのが目標です。

1). 開発環境
まず、開発に使用するMacのスペックです。
MAC: MacBook Air (13-inch, Mid 2012)
プロセッサ名: Intel Core i7
メモリ: 8 GB

統合開発環境です。
Xcode Version 6.4

2). 作ってみた
作成するツールは、もちろん「Hello, World!」です。
コマンドラインツールです。
実際のコードは、コレ!

(CHello.cpp)

(CHello.h)

(main.m)

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!」
が表示されます。

以上、これまでの投稿とは全く毛色の違う内容になってしまいました。
それでも誰かの参考・助けになればと思います。

ではっ!

関連記事

eclipse_oxygen

苦肉の策でLinux/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 前回のエントリでは、仮想環境(VirtaulBox)を用いたRaspberryPi3の

記事を読む

raspberry-pi

QtでRaspberryPi/GUI開発(1):ためしに時計を作ってみた

どもです。 また更新の間隔が空いてしまいました。 久しぶりの更新です。 前回のエントリーで

記事を読む

no image

C言語でEV3開発(17)-コマンドによるTOPPERS/HRP2 EV3RT アプリケーションの制御(コントロール)

どもです。 今回は、TOPPERS/HRP2 EV3RT で作成したアプリをPC上から操作するため

記事を読む

google_test

C言語でEV3開発(6)

どもです。 今回のエントリーは、前回のエントリーの続き、google testでの単体テスト環境に

記事を読む

python

VisualStudioCommunityでのPython開発環境構築

どもです。 最近、VisualStudioでのPython開発を始めました。 その際の環境構築に

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(5):pigpioを使ってみた

どもです。 RaspberryPiを購入して、LEDも手に入れたのでコレをチカらせてみようと思いま

記事を読む

no image

C言語でEV3開発(11)-opOUTPUT_STEP_POWERコマンド

どもです。 今回のエントリーでは、再びモーターを動かすためのコマンドについて書きます。 コマンド

記事を読む

toppers

C言語でEV3開発(20)-超音波センサと安全状態

どもです。 前回は、BluetoothでPCとEv3を接続してコマンドの送受信について書きました。

記事を読む

MindStormControl_SprachScreen

EV3開発サポートツール(1)-C#のユーザーコントロール開発

どもです。 突然ですが、今回はC#に関するエントリになります。 具体的には、C#/WPFで、独自

記事を読む

python

Ev3開発サポートツール(4)-Pythonによるグラフ表示

どもです。 前回のエントリーで、VisualStudioCommunityでのPythonの開発環

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

no image
QtでRaspberryPi/GUI開発(8):pigpioを使用したチャタリング対策の問題の対策

どもです。 だいぶ、間が空いてしまいました。 久しぶりの更新です。

raspberry-pi
QtでRaspberryPi/GUI開発(7):pigpioを使用したチャタリング対策の問題

どもです。 前回のエントリーで、pigpioを使用したチャタリング対

RasPi_Qt
QtでRaspberryPi/GUI開発(6):pigpioを使用したチャタリング対策

どもです。 前回のエントリーで、pigpioを使用したボタンを使用し

RasPi_Qt
QtでRaspberryPi/GUI開発(5):pigpioを使ってみた

どもです。 RaspberryPiを購入して、LEDも手に入れたので

RasPi_Qt
QtでRaspberryPi/GUI開発(4):イベントハンドラの設定

どもです。 前回のエントリーで、「タッチスクリーンを買った」と書きま

→もっと見る

PAGE TOP ↑