2009年05月31日

Windows版Qt CreatorとFTDI USBライブラリの連携

ようやくQt + FTDIがモノになってきたので、ここらで報告。Qt4.5 Windows Free版のQtCreatorでFTDI USBデバイスを使ったアプリケーションを作るための方法。


Qtの入手

NokiaのサイトからQtのWindowsバイナリ版を落としてくる。多分C:\Qtあたりに展開されるはず。私が使っているのは2009.02と書いてある。


FTDIライブラリの入手

FTDIのサイトからD2XXドライバを落としてくる。私が使っているのはCDM 2.04.16 WHQL Certifiedである。添付されているライブラリ定義ファイルはVC++を想定しているので、mingwベースの環境であるQt Creatorでは読み込めない。


FTDIライブラリの変換

ライブラリの定義ファイルftd2xx.libをmingw(てかgcc)が読み込めるように変換する必要がある。変換についての詳しい説明は、dlltoolで検索するとたくさん出てくるので参考にしていただきたい。

詳しい説明を何もかもスキップすると、以下のスクリプトを動かすことで、gcc向けのライブラリ定義ファイルlibftd2xx.libを生成できる。生成したライブラリは、gcc hoge.o -lftd2xxのような感じでリンクできる。

convlib.sh
#!/bin/bash

if [ $# -gt 0 ]
then
  BaseName=$1
  DefFileName=$1.def
  LibFileName=$1.lib
  DllFileName=$1.dll
  OutFileName=lib$1.lib

  echo "Converting " $1
  echo EXPORTS > $DefFileName
  nm $LibFileName | sed -n -e"s/.* T _//p" >> $DefFileName
  dlltool --kill-at --def $DefFileName \
          -dllname $DllFileName --output-lib $OutFileName

else
  echo "Usage $0 libfile-without-suffix"
fi

Qt Creatorから外部ライブラリを呼ぶ

外部ライブラリを用いたプロジェクトをビルドするためには、ライブラリのヘッダファイルの置き場と、リンクするライブラリを指定する必要がある。通常、Makefileを編集することで、要求を達成する。

Qt CreatorではMakefileはqmakeによって自動的に生成される。したがって、Makefileを人手で書き換えても自動的に上書きされてしまう。そこで、qmakeの入力ファイルに設定を追加して、問題を解決する。

実はプロジェクトファイル(*.pro)はqmakeの入力ファイルである。qmakeはプロジェクトファイルを基に、ビルド対象のファイルを特定する。プロジェクトファイルの書式は例えばここで紹介されている。

ftdlib/includeにヘッダファイルを、ftdlib/libにライブラリを置いた場合、プロジェクトファイルはこうなる。これでQt CreatorのGUIからビルドできるようになる。

ft245demo1.pro
TARGET = ft245demo1
TEMPLATE = app
SOURCES += main.cpp \
    dialog.cpp \
    ft245demowidget.cpp \
    ft245ctrl.cpp
HEADERS += dialog.h \
    ft245demowidget.h \
    ft245ctrl.h
QMAKE_INCDIR += ./ftdlib/include
QMAKE_LIBDIR += ./ftdlib/lib
QMAKE_LIBS   += -lftd2xx
posted by yuji_at_radiance at 15:51| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。