2013年9月24日火曜日

Raspberry Pi 入門 5:C++ を試してみる

最新情報の目次はこれで、最終的に動画のような物も作れます。
Raspberry Pi Noobsで簡単リモートデスクトップ
WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
Pythonのセットアップ・・・人気のPythonで動かしてみる

WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO



                                        

以下、昔の記事です。



前回まではC言語でいろいろこなしてみました。

ラズベリーパイにはC言語以外にもC++が対応しています。基本的にはgccをg++と書けば動きます。

C++の簡単な使い方と wiringPi のC言語とC++を組み合わせたコンパイル方法を試してみます。
(MCU GearのLPC1114はC言語ですが、それ以外はC言語とC++を組み合わせた形で書かれています。)


まずはGeanyを使わない形でコンパイルしてみます。

テストプログラムは三つのファイルを用意します。



1、【MyTest.h】
class MyTest{//クラスの宣言
public:
int getData(void);//クラスの関数
};


2、【MyTest.cpp】
#include "MyTest.h"
int MyTest::getData(void){//クラスで定義された実際の関数の中身
return 9;
}


3、【cpptest.c】
#include <stdio.h>
#include "MyTest.h"

int main(void){

MyTest maintest;//MyTestクラスのインスタンス生成
//maintestという中にgetData()という関数が隠れていると考えると分かりやすい。
//インスタンスが実体でクラス宣言した中身を利用できるようになる。

int data = maintest.getData();//MyTestクラスのgetData()関数を呼び出して値を保存

//インスタンスの中身をいじるときは(インスタンス.クラスの中身)

printf("getData = %d\n",data);
}



これら三つのファイルを作り、一つのフォルダに入れます。
フォルダに入れたら.oファイルをコンパイルして作り、最後にビルドして実行ファイルを作ります。
ターミナルでls、cdコマンドを利用し移動して次の様なコマンドを入れます。

g++ -c MyTest.cpp -o Mytest.o
g++ -c cpptest.c -o cpptest.o
g++ cpptest.o MyTest.o -o cpptest
./cpptest

最後にgetData = 9
と出ていれば成功です。
次はGeanyの設定をしてみましょう。


ビルドコマンドを設定します。


gccと書いてあるところをg++にしておくと、とりあえず一つ一つのファイルをコンパイルして.oファイルを作れるようになります。

次にmakefileを作ってみましょう。


cpptest : cpptest.o MyTest.o

g++ -Wall cpptest.o MyTest.o -o cpptest



clean:

rm -f *.o cpptest

と記述すると、プログラムを書き変えてもすぐにビルドボタン、実行ボタンで動くようになります。

次にwiringpi とC++を組み合わせてみましょう。
3回目にやったblink.cのmain関数に

#include "MyTest.h"

int main(void){
MyTest maintest;
int data = maintest.getData();
printf("getData = %d\n",data);

を加えてみましょう。
そして同じフォルダにMyTest.cpp とMyTest.h を入れてみましょう。

ターミナルを開いて
g++ -Wall -o blink.c MyTest.cpp -lwiringPi

sudo ./blink

と実行すればC++もC言語も動きます。


次回はMCU Gearがつながるかを検証してみます。

0 件のコメント:

コメントを投稿