*

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

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

ではっ!

関連記事

toppers

C言語でEV3開発(18)-モードの遷移の設計-コマンド通信処理の準備

 どもです。  今回は、前回紹介したEv3とBluetoothで通信する機能を

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

どもです。 2回目の投稿。 本格的な投稿としては、初めての投稿になります。 内容は、LEG

記事を読む

RasPi_Qt

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

どもです。 前回のエントリーで、pigpioを使用したボタンを使用したLEDの点灯/消灯について書

記事を読む

no image

C言語でEV3開発(4)

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

記事を読む

no image

RaspberryPiのOS:RaspbianをNOOBSでセットアップしてみた

どもです。 今回の内容は、「今更!?」ですがNOOBSでRaspbianをセットアップしたとい

記事を読む

no image

Windows-QtCreatorでのデバッグ

どもです。 更新の間隔が空いてしまいました。 久しぶりの更新です。 最近、Qtを触り始めま

記事を読む

RasPi_Qt

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

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

記事を読む

toppers

C言語でEV3開発(23)-モーターの性能確認

どもです。 今回は、EV3に付属しているモーター(Lモーター/Mモーター)の性能について調べてみた

記事を読む

MindStormControl_SprachScreen

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

どもです。 前回に引き続き、今回もC#/WPFでの独自UI(ユーザーコントロール)の作成についての

記事を読む

eclipse-juno-logo

C言語でEV3開発(2)

どもです。 今回のエントリーの内容は、前回に引き続き「EV3の開発環境の構築」の追記です。

記事を読む

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
Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。(その後)

どもです。 前回、Linux/RaspberryPiでのQt(Q

RasPi_Qt
Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。

どもです。 RaspberryPiのOS:Raspbianの新し

no image
RaspberryPiのOS:RaspbianをNOOBSでセットアップしてみた

どもです。 今回の内容は、「今更!?」ですがNOOBSでRasp

GitHub
C/C++のスタブを自動生成するツールを公開しました

どもです。 突然ですが、C/C++の単体テストで使用する「スタブ

Arduino_Logo
フォトレジスタを使ってみた-Arduinoで光検出

どもです。 今回は、タイトル通り「フォトレジスタの使い方」です。

→もっと見る

PAGE TOP ↑