【问题标题】:Linking libqxt in a Qt5 application on Ubuntu在 Ubuntu 上的 Qt5 应用程序中链接 libqxt
【发布时间】:2013-05-05 18:05:59
【问题描述】:

我在 Qt5 应用程序中链接 libqxt 时遇到问题。

我在文档中编写了一个类似示例的代码,但我有错误。

QxtGlobalShortcut* shortcut = new QxtGlobalShortcut(this);
connect(shortcut, SIGNAL(activated()), this, SLOT(newScreenshoot()));
shortcut->setShortcut(QKeySequence("Ctrl+Shift+F12"));

我正在使用 Qt 5.0.1

damian@damian-Lenovo-B560:~$ qmake --version
QMake version 3.0
Using Qt version 5.0.1 in /usr/lib/i386-linux-gnu

以及来自 Ubuntu 13.04 存储库的最新 libqxt-dev

我有以下链接器错误:

/home/damian/Dokumenty/Programowanie/QShot/mainwindow.cpp:20: error: undefined reference to `QxtGlobalShortcut::QxtGlobalShortcut(QObject*)'
/home/damian/Dokumenty/Programowanie/QShot/mainwindow.cpp:22: error: undefined reference to `QxtGlobalShortcut::setShortcut(QKeySequence const&)'

【问题讨论】:

  • 好像你没有链接 libqxt。仅包括库的标题只是两个步骤之一,链接它是第二个步骤。但是,我不知道该怎么做才能链接这个库,也许看看文档。
  • 我已将 CONFIG += qxt QXT += core gui 添加到我的 *.pro 文件中,如文档中所述。
  • 你能告诉我qmake的输出吗?你也用Qt4尝试过吗?也许 qxt 只与 Qt4 兼容(或者这个特定的库版本可能是用 Qt4 构建的......)
  • 我刚刚发现libqxt本身兼容Qt5的。但根据this package dependency listing 看来,Ubuntu 中提供的软件包是针对 Qt4 编译和链接的。这使得它无法与 Qt5 一起使用。所以你必须手动构建它,我猜...... :(
  • 手动构建并不可怕。 (:我会尝试并回复我的进度。(:

标签: c++ qt libqxt


【解决方案1】:

我现在在 Ubuntu 13.10 上遇到了类似的问题,我已经成功编译了我的应用程序。问题是我在添加记录器引擎时收到的 SIGSEGV

QxtBasicFileLoggerEngine *dbg  = new QxtBasicFileLoggerEngine("debug.log");

// qxtLog takes ownership of dbg - no need to manage its memory
qxtLog->addLoggerEngine("dbg", dbg);

为了做到这一点,我从命令行使用 QT4 编译了所有内容(不要使用 qmake,默认情况下使用 qt5):

qmake-qt4 
make

所以这似乎确实是 qt5 库与 qt4 库的奇怪组合(libqxt 似乎是使用/for qt4 编译的)。不幸的是,我没有任何其他选择可以使用 qt4 在 Ubuntu 上编译项目。我不知道规范是否有问题。

希望这可以节省一些麻烦并消除一些挫败感。我很惊讶几乎没有人抱怨这个问题。

【讨论】:

    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多