コマンドプロンプトからqmake -project
、qmake
、make
をして出来上がったプログラムは動くのに、eclipseでは同じプログラムをビルドしたときになんかエラー…
エラーメッセージで検索してみると、リンカのオプションどーのこーのと書いてあったが変わらず。
#include <QApplication.h>
#include <QPushButton.h>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton hello("Hello world!");
hello.resize(100, 30);
hello.show();
return app.exec();
}
このような、チュートリアルにもあるコードをeclipseビルドしてみました。すると、
undefined reference to `_imp___ZN12QApplicationC1ERiPPci'
などというエラーが…。どれもundefined reference
とあるので要はなんか参照できていないようです。
とりあえず、アタマのQApplication.hをeclipse右側の「アウトライン」でダブルクリックして開いてみると、
#include "../../src/gui/widgets/qpushbutton.h"
と書いてあります。ところが、その../../src/gui/widgets/qpushbutton.h
を同じように参照しようとすると、どうにも見つからない。
おかしいなと思って、最初に戻り、もともとのエラーをみてみると…
(workspace)/hello/Debug/../sample.cpp:6: undefined reference to `_imp___ZN12QApplicationC1ERiPPci'
おや?
Debug/
フォルダの親フォルダのsample.cppを意味したいんだろうけど、/hello/Debug/../sample.cpp
になっちゃってるよ。ふつう/hello/sample.cpp
じゃない?
こうだとすると、さっきの参照できなかった理由もなんとなくわかってくる。
(QT)/include/Qt/QPushButton.h
から ../../src/gui/widgets/qpushbutton.h
を参照したとき、
(QT)/src/gui/widgets/qpushbutton.h
を参照すべきところ
(QT)/include/Qt/../../src/gui/widgets/qpushbutton.h
とかいうわけのわからない階層を参照しちゃっているのではなかろうかと。(Qt以下に..
というフォルダがあって、そのまた下に…)
この推測は、もし/hello/Debug/../sample.cpp
が/hello/sample.cpp
を意味しているんだったら無意味です。誰か筆者の暴走を止めてやってください。