Qxtライブラリでundefinitionエラー(ビルドに失敗?)
-
Win8.1
Qt5.3.2minGWを使っています。QxtのGlobalShourtCutを利用しようと思いまして、
http://qt-project.org/wiki/LibQxt_in_QtCreatorこのページを参考にQxtをビルド、使用しました。
proファイルは
@
QXT_DIR = C:\QxtINCLUDEPATH += C:\Qxt\include\QxtWidgets
INCLUDEPATH += C:\Qxt\include\QxtCoreLIBS += -LC:\Qxt\lib
QXT += gui core
@以上のようにして
@
QxtGlobalShortcut *shortcut = new QxtGlobalShortcut(this);
connect(shortcut, SIGNAL(activated()),this,SLOT(shortCutAct()));
shortcut->setShortcut(QKeySequence("Ctrl+Shift+F12"));
@このように使用したところ、
In function
ZN10MainWindowC2EP7QWidget': エラー: undefined reference to
_imp___ZN17QxtGlobalShortcutC1EP7QObject'
エラー: undefined reference to `_imp___ZN17QxtGlobalShortcut11setShortcutERK12QKeySequence'
collect2.exe:-1: エラー: error: ld returned 1 exit status以上のようなエラーがでてきました。
ライブラリのリンクは間違っていないと思われるので、ビルドに失敗したのかと思い、再度Qxtのconfigure.batを実行してみたところ
_
Testing for qmake...Testing for mingw32-make...
Using mingw32-make.
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
Testing for optional external libraries.
If tests fail, some features will not be available.
Testing for Berkeley DB...
Berkeley DB disabled.
Testing for Zero Conf...
Zero Conf disabled.
Configuration successful.
Generating makefiles...
<以下bindingとビルド>
_このような構文エラーがでてきていました。
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
どうやらbatファイルの以下の行でエラーを起こしているようです。
@
if "%QXT_INSTALL_FEATURES%" == "Unknown" %QMAKE_BIN% -query QT_HOST_DATA > %QXT_BUILD_TREE%\mkspecs.tmp & set /p QXT_INSTALL_FEATURES=<%QXT_BUILD_TREE%\mkspecs.tmp & set QXT_INSTALL_FEATURES=<%QXT_INSTALL_FEATURES%\mkspecs
@QXT_BUILD_TREEはカレントディレクトリのアドレスのようです。
作業ディレクトリなどには基本的な英数字とハイフンしか使用していないのに、なぜ構文エラーを起こしているのかわかりません。上記のようなbatファイルでのエラーを起こしていても、Qxtのビルドは通るのですが、Qxtライブラリが動かない理由はこれが原因なのでしょうか。
資料が少なく、困っています。
どなたかご教授お願い致します。 -
こんにちは。
ちゃんとすべてを把握してないのでとりあえずQxtを使用するアプリをビルドするだけの参考情報になりますが。
(テストアプリを実行しようとしたらQxtGlobalShortcutをnewするところでエラーになりました)さて、proファイルの設定でLIBSのところを以下のようにしないとリンカエラーになるようです。
LIBS += -LC:\Qxt\lib -lqxtcore -lqxtwidgets
-
ありがとうございます。
実際にproを書き換えたところ、ビルドには成功しました。ですが、同じように
newの時点でQObject: Cannot create children for a parent that is in a different thread.
(Parent is MainWindow(0x28fe1c), parent's thread is QThread(0x1231b1a0), current thread is QThread(0x1231e310)エラーが出ました。
完全な解決には至りませんでしたが、ご回答ありがとうございます。
引き続き上記エラーの解決法を募集したいです。