*

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

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

ではっ!

関連記事

Arduino_Logo

ホールセンサーの種類と使い方(割込み編)

どもです。 前回に引き続き、今回もホールセンサーについてです。 1.前回からの違い 前回の

記事を読む

toppers

C言語でEV3開発(28)-EV3の移動距離を計算できるようにしてみた

どもです。 今回は、Ev3の移動距離の算出についてです。 1.算出方法について 移動距離は

記事を読む

RasPi_Qt

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

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

記事を読む

Arduino_Logo

1台のarduinno nanoで割込みとSPIの同時使用

どもです。 先日手に入れたArduino nano(中華)で遊んでいます。 今回、この1台のAr

記事を読む

no image

C言語でEV3開発(7)

どもです。 今回のエントリーでは、いよいよEV3を動かしていきます。 新しい環境に対して、最もよ

記事を読む

toppers

C言語でEV3開発(19)-コマンド通信処理でEchoBackしてみた

どもです。 前回は、Bluetoothの接続状態の変化に伴う、状態遷移について書きました。 今回

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(12)-gpioの状態をGUIに反映する

どもです。 今回は、gpioピンの状態(HIGH/LOW)の変化を画面上に即座に反映する方法につい

記事を読む

toppers

C言語でEV3開発(27)-EV3にヒステリシス処理を実装してみた

どもです。 今回は、モーターから読み出した値に対するヒステリシス・フィルター処理です。 0.

記事を読む

no image

C言語でEV3開発(4)

どもです。 今回のエントリーは、前回のエントリー内容/EclipseでEV3の実行ファイルをビルド

記事を読む

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="">

RasPi_Qt
QtでRaspberryPi/GUI開発(12)-gpioの状態をGUIに反映する

どもです。 今回は、gpioピンの状態(HIGH/LOW)の変化を画

raspberry-pi
RaspberryPi起動時にpigpiodがスタートしないようにする

どもです。 これまでpigpioを使用してRaspberryPiから

no image
自宅で電子工作(1):ブレッドボードでの配線を省略する

どもです。 突然ですが、電子工作を始めてみました。 1.背

Arduino_Logo
ホールセンサーの種類と使い方(割込み編)

どもです。 前回に引き続き、今回もホールセンサーについてです。

Arduino_Logo
ホールセンサーの種類と使い方

どもです。 今回のエントリは、表題にある「ホールセンサー」についてで

→もっと見る

PAGE TOP ↑