3

我在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&)'
4

1 回答 1

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 上编译项目。我不知道规范是否存在问题。

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

于 2014-02-15T15:17:12.743 回答