我正在尝试在 QT 上构建一个应用程序。这是应用程序。
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <QWebFrame>
#include <QWebPage>
#include <QWebView>
class MyJavaScriptOperations : public QObject {
Q_OBJECT
public:
Q_INVOKABLE void sumOfNumbers(int a, int b) {
qDebug() << a + b;
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWebView *view = new QWebView();
view->resize(400, 500);
view->page()->mainFrame()->addToJavaScriptWindowObject("myoperations", new MyJavaScriptOperations);
//view->load(QUrl("file:///path/to/my/index.html"));
view->show();
return a.exec();
}
我有以下专业文件。
QT += core gui
QT += widgets
QT += webkit
TARGET = JS_DEMO1
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
构建时出现以下错误。
(.text.startup+0x8c):-1: 错误:未定义对 `vtable for MyJavaScriptOperations' 的引用
最佳答案
因此,错误:未定义的对vtable的引用
的可能原因以及相应的解决方案是:
- 某个类继承了纯虚函数,但尚未重写它们。覆盖它们。
- 在创建
moc
后,已将类声明为QObject
继承人并使用Q_OBJECT
宏。再次制作moc
。 - header 尚未包含在
.pro
中,或者是在 header 中出现Q_OBJECT
之后添加的。重新构建项目,或者(简单的方法)更新.pro
的时间戳并再次构建。例如,更新所有项目的时间戳的快捷方法是find 。 -name '*.pro' -exec touch '{}'\;
后两者似乎导致了你的情况。
希望这有帮助。
关于javascript - 为什么添加 Javascript 窗口对象时 Vtable 链接会出现问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21729769/