*

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_4.3_kepler

elicpse/CDTでのgdbでのソースを追従したデバッグができない問題

どもです。 今回のエントリーは、Eclipse上でgdbを利用したデバッグ中に発生する問題について

記事を読む

raspberry-pi

RaspberryPi3対応のタッチスクリーンを買いました

どもです。 ついに、念願のRaspberryPi3対応のタッチスクリーンを買いました。 今回のエ

記事を読む

raspberry-pi

RaspberryPiで物体検出(2)-白線検出への挑戦(2):輪郭検出による白線検出(実機編)

どもです。 今回は、前回に引き続きOpenCvを用いて道路の白線検出について、です。 1.今

記事を読む

eclipse_oxygen

Eclipse/CrossCompile環境でプロジェクトをクリーンできない

どもです。 今回は、Eclipseでクロスコンパイル環境を作成した場合、を実行すると「指定されたフ

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

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

記事を読む

toppers

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

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

記事を読む

no image

C言語でEV3開発(7)

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

記事を読む

python

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

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

記事を読む

eclipse_oxygen

Linux/EclipseでRaspberryPiのクロス環境を構築してみた…がっ!

どもです。 前回のエントリでは、WindowsにRaspberryPi3のクロスコンパイル環境の構

記事を読む

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

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

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

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

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

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

どもです。 先日手に入れたArduino nano(中華)で遊んでい

Arduino_Logo
Arduino nano(中華版)をセットアップしてみた

どもです。 突然ですが、「Arduino nano」互換(なのか?)

raspberry-pi
libpigpioでのRaspberryPi3とArduinoのSPI通信

どもです。 今回は、libpigpioを使用してRaspberryP

→もっと見る

PAGE TOP ↑