我正在尝试使用Qt访问应用程序的COM API。但是,当我尝试实例化COM API对象时,我得到:
D:\dev\git\com_example\Lights.h:441: error: undefined reference to `vtable for Lights::Application'
现在我知道这通常与我们已经声明了一个方法但没有实现它的事实有关,但我使用的是SDK提供程序为应用程序提供的Lights.tlb文件和Lights.h文件中提到的Qt自动生成错误消息。
我的.pro文件是:
QT += core gui webkitwidgets network widgets sql axcontainer
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = com_example
TEMPLATE = app
TYPELIBS = $$system(dumpcpp Lights.tlb)
HEADERS += \
LightsInterface.h
SOURCES += main.cpp\
LightsInterface.cpp
TYPELIBS位将Lights.tlb文件转换为Lights.h和Lights.cpp
这很好,代码构建但是一旦我尝试创建COM API接口的实例,我就会收到错误。执行此操作的代码是:
#include <QWidget>
#include <QMainWindow>
#include "Lights.h"
class LightsInterface : public QMainWindow
{
Q_OBJECT
public:
explicit LightsInterface(QWidget *parent = 0);
signals:
public slots:
private:
Lights::Application app;
};
#endif // LIGHTSINTERFACE_H
有人知道我做错了什么吗? Lights.tlb文件中是否未正确生成Lights.h和Lights.cpp文件?我是否尝试错误地实例化对象?
任何帮助都非常感激。
感谢