Qxtライブラリでundefinitionエラー(ビルドに失敗?)



  • Win8.1
    Qt5.3.2minGWを使っています。

    QxtのGlobalShourtCutを利用しようと思いまして、
    http://qt-project.org/wiki/LibQxt_in_QtCreator

    このページを参考にQxtをビルド、使用しました。

    proファイルは

    @
    QXT_DIR = C:\Qxt

    INCLUDEPATH += C:\Qxt\include\QxtWidgets
    INCLUDEPATH += C:\Qxt\include\QxtCore

    LIBS += -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ライブラリが動かない理由はこれが原因なのでしょうか。

    資料が少なく、困っています。
    どなたかご教授お願い致します。


  • Qt Champions 2015

    こんにちは。

    ちゃんとすべてを把握してないのでとりあえず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)

    エラーが出ました。

    完全な解決には至りませんでしたが、ご回答ありがとうございます。

    引き続き上記エラーの解決法を募集したいです。


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.