javascript - 为什么添加 Javascript 窗口对象时 Vtable 链接会出现问题?

标签 javascript c++ qt

我正在尝试在 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/

相关文章:

javascript - 我想使用位置功能向 #cart-total-remove 添加一个类,我尝试了很多方法但没有成功

c++ - 如何通过其偏移量访问私有(private)数据私有(private)成员?

c++ - QList 的最大大小是多少?

javascript - 我新添加的按钮的值返回未定义或根本不返回任何内容

javascript - 在 2d 空间中移动渲染输出

javascript - jquery ajax返回值和done函数

c++ - 覆盖c库文件函数?

c++ - 如何构建 Poco C++ 库

c++ - QVideoFrame 的许多构造函数中的 1 个的未定义引用

javascript - 将 JavaScript QML 项解析为 C++ QT