Visual C++ でD2XXライブラリを使う
Visual StudioでC++言語とD2XXライブラリを使ってFT232Hを制御するプログラムを作る手順を紹介します。以下の2つのURLを参考にしています。
- VisualStudio Express ProjectでD2XXドライバを使う手順
Instructions on Including the D2XX Driver in a VS Express Project - D2XX Programmer’s Guide
Vsiual Studioプロジェクトの作成(Win32アプリケーションの場合)
以下ではVisualStudioでC++コードを使ったWindows 32ビットのコンソールアプリケーションを作る例を使って説明します。C++コードはMEMSマイクアレイ用データ収集システムのものです。
ⅰ)新規プロジェクトの作成
- 既存のVisualStudioのプロジェクトを開いている場合
メインメニュー > 新規作成 > プロジェクト(P)… - 新規にVisualStudioを起動した場合
ページの右側の“開始する”の一番下にある“新しいプロジェクトの作成(N)”をクリック

ⅱ)言語,プラットフォーム,アプリの種類を設定
“新しいプロジェクトの作成”ウインドウが開きます。

C++言語を使ってWindowsマシン上でコンソールアプリケーションを作るように設定します。
①C++言語,②Windows,③コンソール を選び,④次へ をクリックします。
ⅲ)プロジェクト名,プロジェクトの場所を設定
“新しいプロジェクトを構成します”というウインドウが表示されます。ここでプロジェクトの名称,プロジェクトを格納する場所,ソリューションの名称を設定します。“ソリューション”というのは,複数のプロジェクトを使ってプログラム開発をするとき,これらのプロジェクトをまとめて管理するための“入れ物”のことです。新しくプロジェクトを作る際は,ソリューションも指定します。特に指定しなければプロジェクト名と同じ名前のソリューションを新しく作ることになります。

①プロジェクト名,②プロジェクトを格納するディレクトリ を指定し,③“作成”ボタンをクリック
→ プロジェクトが作成され,アプリケーションのウィンドウが表示されます。

アプリケーションウィンドウの左側に“ソリューションエクスプローラ”があります。これを使ってソースファイルなどの確認,追加,削除などの操作ができます。
プロジェクトの格納場所に指定したディレクトリの中に指定したソリューション名と同じ名称のディレクトリ(フォルダ)が作成されています。このフォルダはソリューションフォルダと呼ぶことにします。このフォルダを開くと中は次の図のようになっています。

- ソリューションファイル
“プロジェクト名.sln”というファイル名になります。このファイルをダブルクリックすることでVisualStudioを起動し対応するウインドウがを開くことができます。 - プロジェクトフォルダ
プロジェクト名と同じ名前のフォルダで,プロジェクトに関するファイルが格納されます。以下,プロジェクトフォルダと呼ぶことにします。
ソースファイル,ヘッダファイルの設定
作成済みのソースコードとヘッダファイルを使うことにします。これらのファイルの格納場所は比較的自由に選べると記憶していますが,ここではプロジェクトフォルダの中に格納することにします。
ⅰ)ソースコードをプロジェクトフォルダに配置
ソースコードのファイルをプロジェクトフォルダ内にコピーします。
ⅱ)ヘッダファイルftd2XX.hをプロジェクトフォルダに配置
ライブラリフォルダ(CDM v2.12.36.4 WHQL Certified)の中にあるftd2xx.hをプロジェクトフォルダ内にコピーします。
ⅲ)ソースファイル,ヘッダファイルをプロジェクトに追加
- ソリューションエクスプローラでソースファイルを追加
ソリューションエクスプローラのツリー上のソースファイルを選び,右クリックし,
追加 > 既存の項目(G)… を選択
ファイル選択のダイアログボックスが開くので,フォルダに入っているソースコードのファイルを選ぶ。アプリケーションウインドウの右側のボックス内にソースコードが表示される。 - ソリューションエクスプローラでヘッダファイルを追加
ソリューションエクスプローラのツリー上のヘッダーファイルを選び,右クリックし,
追加 > 既存の項目(G)… を選択
ファイル選択のダイアログボックスが開くので,フォルダに入っているソースコードのファイルを選ぶ。
ソリューションエクスプローラのツリーを展開すると追加されたファイルを確認できます。

プロジェクトの設定・ライブラリの指定
ⅰ)ライブラリファイルをプロジェクトフォルダにコピー
ライブラリフォルダの中にi386というフォルダがあります。その中にあるftd2xx.libというファイルをコピーし,プロジェクトフォルダの中に貼り付けます。
ⅱ)プロジェクトのプロパティでライブラリファイルを追加
ソリューションエクスプローラのツリーで,上から2番目にある,プロジェクトを示すアイコンを選び,
右クリック > プロパティ (または,メニュー > プロジェクト > プロパティ)
によりプロパティページを開きます。上部に構成とプラットフォームを設定するボックスが,その下の左側に構成プロパティのツリーがあります。
- 構成・プラットフォームの設定
①構成(C):すべての構成,②プラットフォーム(P):すべてのプラットフォーム と設定

- ライブラリの指定
③プロパティツリーの“▷リンカー”の▷をクリックして展開し,④“入力”を選択
④追加の依存ファイルを選択し,⑤<編集…>と表示されたテキストボックスをクリックすると,“追加の依存ファイル”というボックスが開くので,⑥ftd2xx.libと入力し,OKをクリック。
最後にプロパティページのOKをクリックして閉じる。


ビルド
以上の設定で,プログラムを実行形式に変換する準備ができました。実行形式にはデバッグ用(Debug)と配布用(Relaese)の2種類があります。デバッグ用に作られた実行形式コードはソースコードと関連づけられていて,実行を中断するブレークポイントの設定や変数値の確認が容易になっています。しかし,ファイル容量が大きく実行速度も遅くなります。一方,Release用はDebug用より寸法が小さく高速になります。
- Debug/Releaseおよびプラットフォームの指定
①ソリューション構成に“Debug”または“Release”を選択,②ソリューションプラットフォームには32bitアプリを作るので“x86”を選択。 - ソリューションのビルド
③メニュー > ビルド > ソリューションのビルド
④出力ウインドウで“ビルド: 1 正常終了”となっていることを確認。

ビルドを実行すると,ソリューションフォルダの中に,Debugビルドの場合は“Debug”,Releaseビルドの場合は,“Release”という名前のフォルダが作られます。ビルドが正常に終了した場合は,その中に“プロジェクト名.exe”というファイル名の実行形式ファイルが格納されているので,これを好きなところにコピー&ペーストしてダブルクリックすることで起動することができます。

x64アプリケーションの作成
以上の操作で作られたプロジェクトからWIndows 64ビットアプリケーションもビルドできます。
- ライブラリを64ビット用に入れ替え
ライブラリフォルダ(CDM v2.12.36.4 WHQL Certified)の中にamd64というフォルダがある。その中にあるftd2xx.libというファイルをコピーし,プロジェクトフォルダの中に貼り付ける。既に格納されているftd2xx.libがあれば上書きされ置き換わる。 - ソリューションプラットフォームを“x64”に変更しビルド
スタチックライブラリを使ったビルド
スタチック型のライブラリを使ったアプリを作ることもできます。以下に示す操作以外は,これまで紹介した手順とほぼ同じになります。少し複雑になります。

- スタチック型ライブラリftd2xx.libをプロジェクトフォルダにコピー
ライブラリフォルダの中にStaticという名前のフォルダがあり,その中にはi386,amd64という2つのフォルダがある。スタチック用のftd2xx.libは,32bit用がi386,64bit用がamd64の中に格納されている。必要なビット数対応のライブラリをコピーし,プロジェクトフォルダの中のftd2xx.libに上書きして置き換える。 - プロジェクトのプロパティの設定
プロジェクトのプロパティページを開き,①左側のプロパティツリーの“C/C++”を展開し,②プリプロセッサ(Preprocessor)を選択する。③右側のウインドウに表示される項目の最上段にある“プリプロセッサの定義”の編集ボックスを開いて,FTD2XX_STATIC;と入力する。(<別のオプション>とセミコロン“;”で区切られているようにする。) - ランタイムライブラリの設定
プロジェクトのプロパティページで,④C/C++ > コード生成 > ランタイムライブラリ と選択。
⑤右の選択ボックスの▽をクリックして表示されるドロップダウンから,
Debugビルドの場合は/MTd
Releaseビルドの場合は/MT
を選ぶ。

- さらにReleaseビルドの場合は・・・
プロパティページで,リンカー > デバッグ を選択し,ページ右側の最上段“デバッグ情報の生成”の右側の選択ボックスの▽をクリックし,“いいえ”を選ぶ。

以上の作業をしてビルドをします。
<補足説明を読む>
ライブラリftd2xx.libはインポートライブラリと呼ばれているものと考えられます。(技術文書TN_153ではdynamic ftd2xx.libと記述されています。)ftd2xx.libの実体はライブラリの本体ではなく,Windowsにインストールされたdllであるftd2xx.dll内の関数の場所を実行ファイルの本体に知らせる機能だけを担っているようです。
実行形式のファイルがdll内の関数を組み込む,つまりリンクするのは,ビルドの際ではなく実行形式のファイルを起動したときになります。これにより実行形式のファイル(“プロジェクト名.exe”というファイル名になる)の寸法が小さくなり,ライブラリを更新する際も,再ビルドせずにdllファイルを交換するだけよいことになります。
しかし,ライブラリやその格納場所が異なる環境に実行ファイルを持っていって実行したときに予期しない動作をする可能性があります。
これに対し,スタチック型のライブラリを使うとビルドの際にリンクされるので,上記のような問題は発生しません。dllをインストールしていない環境でも動かすことができます。ただし実行形式の寸法が大きくなり,ライブラリを変更した場合は再コンパイルが必要になります。
<閉じる>
コメント