【发布时间】:2013-09-11 15:27:27
【问题描述】:
我正在尝试将此类添加到项目中^
//Emitter.h
#ifndef EMITTER_H
#define EMITTER_H
#include <QObject>
#include <QDBusInterface>
#include <QDBusAbstractAdaptor>
#include <QDBusVariant>
class Emitter:public QObject
{
Q_OBJECT
public:
Emitter();
private:
QDBusInterface * m_interface;
QString m_interfaceName;
};
#endif // EMITTER_H
和
//Emitter.cpp
#include "CESMEmitter.moc"
#include "Emitter.h"
Emitter::Emitter( QObject * parent )
: QObject( parent )
{
}
我使用 moc 收到的 CESMEmitter.moc 文件如下:
moc CESMEmitter.h > CESMEmitter.moc
在尝试使用 Makefile 构建后,我收到一个错误,说没有找到 Qt 包含文件。
所以我添加了变量
QT_STUFF = -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtDBus -I/usr/include/qt4 -L/usr/lib/x86_64-linux-gnu -lQtGui -lQtCore -lQtDBus -lpthread
并应用它。
找到了包含文件,但出现了其他错误:
error: undefined reference to `QObject::QObject(QObject*)'
error: undefined reference to `qt_assert(char const*, char const*, int)'
error: undefined reference to `QString::shared_null'
error: undefined reference to `QString::shared_null'
谁能给点建议?
【问题讨论】:
-
将qt lib文件夹添加到LIBS:
LIBS+="-l/path/to/qt/lib" -
我加了,在QT_STUFF里面是-L/usr/lib/x86_64-linux-gnu
-
是否也会传递给链接器?
-
是的,因为整个 QT_STUFF 都通过了
-
kopalvich:为什么不使用 LIBS?此外,您不应该使用“moc CESMEmitter.h > CESMEmitter.moc”,但您可以使用 moc 的输出选项...