teruノート

ROSでロボットとか。Ubuntuで困ったこととか。

Qwtのインストールでコケて諦め

GUIクロスプラットフォーム開発環境のQtでグラフなどを簡単に扱えるようになるQwtというファームウエアがあります。

公式サイトはこちらです。
http://qwt.sourceforge.net/

ソースコード形式で配布されているので、自前の環境でビルドする必要があります。

公式には、展開したqwt-6.1.3フォルダ内で

qmake qwt.pro
nmake
nmake install

と叩けばC:\qwt-6.1.3にインストールされるとあります。


が、nmakeでエラーが出ました。

Qt5OpenGLd.lib(Qt5OpenGLd.dll) : fatal error LNK1112: モジュールのコンピューターの種類 'x64' は対象コンピューターの種類 'X86' と競合しています。

とのことでした。言わんとしていることはなんとなくわかりますが、どのように対処すればよいかわかりませんでした。

なお当方の環境はVisual studio 2015 64bitコンパイラ、Qt v5.7.0 64bitです。



試しに、qwt-6.1.3フォルダ内のqwt.proをQt Creatorで開き、ビルドしました。

すると、qwt-6.1.3フォルダがあるフォルダに自動生成されるbuild-qwt-Desktop_Qt_5_7_0_MSVC2015_64bit-Debugフォルダに、バイナリが生成されていました。

Makefileもあったので、そこでnmake installしたところ、C:\qwt-6.1.3にインストールされました!




こちらにあるように、designerプラグインを使おうとしたのですが、「有効なWin32アプリケーションではありません」とエラー表示があり、「失敗したプラグイン」となってしましました。

月の杜工房 - Qwt概要


これは、Qt Creatorが32bitであることに起因するようです。

ならqwtを32bitコンパイラでビルドすればいいと思ってやってみたのですが、今度は「指定されたプロシージャが見つかりません」とエラー表示があり、designerプラグインはもうあきらめました…

Qtでcorecrt.hが見つからないと言われる問題

Qtで適当なプロジェクトを作成し、ビルドしたところ

エラー: C1083: include ファイルを開けません。'corecrt.h':No such file or directory

と言われてしまいました。まずインクルードパスを追加します。.proファイルにこれを追加します。

INCLUDEPATH += "C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt"


ファイルにたどり着くことはできているみたいですが、エラーは収まりません。

普通に実体のファイル"corecrt.h"はあるんですけどね…


調査を続けると、ひとつの解決策が見つかりました。ソースはここです。

[QTBUG-50191] New Qt Quick application does not build with VS2015 (cannot include corecrt.h) - Qt Bug Tracker

このフォーラムに投稿したPhilipp Münzel氏によると、
"Re-run the VS2015 installer, click "Modify" and then choose to install "Universal Windows App Development Tools", which is found under "Windows and Web Development" and click update. This installs the Windows 10 SDK and fixes the problem."
だそうです。

Visual studio 2015のコンポーネントが足りないみたいなので、「ユニバーサルWindowsアプリ開発ツール」をインストールします。

f:id:ub2_memo:20160730000930p:plain

インストーラを起動し、こいつにチェックをいれて、更新ボタンをクリックします。

インストール後、再起動。これでビルドが通るようになりました。

Qt環境構築

GUIを使ったソフトウエアを作る必要があったので、Qt(キュートと読みます)というフレームワークを導入しようと思います。

クロスプラットフォームなので、WindowsでもUbuntuでも同じ環境で開発できるようです。

今回はWindowsでやってみます。



Qtをこちらからダウンロード、インストールします。

Qt | Download Open Source Step 3

コンパイラは種類が選べるようですが、もともとVisual studio 2015を入れていたのでこれを使います。

Visual studioは、入れただけで全然使ってませんでした。これが躓く原因となりました…

Qtのため新規にVisual studioを入れた人も同じ道を通ると思います。

Visual studio 2015では、C++コンパイラが追加インストールという形になっています。最初に、適当なC++のプロジェクトを作るなりしてC++コンパイラをインストールする必要があります。


これをしてないと、ビルドに失敗して、
「ビルドする為にコンパイラの設定が必要です。」と言われてしまいます。



さらに、デバッガもインストールが必要です。

こちらからDebugging Tools for Windowsをダウンロードしインストールします。

WDK と WinDbg のダウンロード - Windows ハードウェア デベロッパー センター


コンパイラやデバッガは、Qtのほうで基本的に自動認識してくれます。


これでGUI開発環境を整備できました。