QT-第三方回拨未回拨

QT - 3rd Party Callback Not Calling back?

本文关键字:回拨 第三方 QT-      更新时间:2023-10-16

我为正在使用的第三方库创建了一个测试应用程序,它编译得很好,但似乎从未达到__stdCall WriteDone。

从示例代码来看,它看起来像这个函数

    if(cmcd->BuildISOImage(isoName, &CMCDBurner::WriteDone, NULL) == TRUE)
    {
        qDebug() << "inside build iso";
    }

调用此代码,但据我所知,它从未出现在这里。

void __stdcall CMCDBurner::WriteDone(int DeviceId, bool Failed, void *arg)
{
    qDebug() << "inside write done.";
}

这是整个测试应用

#include <QCoreApplication>
#include "Windows.h"
#include "MCDBcls.h"
#
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    char* cdDestination = "\";
    char* isoName = "C:\LinearSystems\AVCommand\ISO\aviso.iso";
    CMCDBurner* cmcd = new CMCDBurner();
    cmcd->ClearAll();
    cmcd->InsertFile(cdDestination, "C:\DLS\Interviews\Test_001\20130515-87701\interview.xml" );
    int c = cmcd->Prepare();
    int b = cmcd->GetFilesCount();
    if(cmcd->BuildISOImage(isoName, &CMCDBurner::WriteDone, NULL) == TRUE)
    {
        qDebug() << "inside build iso";
    }
    return a.exec();
}

void __stdcall CMCDBurner::WriteDone(int DeviceId, bool Failed, void *arg)
{
    qDebug() << "inside write done.";
}

我刚刚意识到您尝试为类CMDCDBurner定义WriteDone函数。尝试将函数移到主方法前面,并省略CMDCDBurner:::

void __stdcall WriteDone(int DeviceId, bool Failed, void *arg)
{
    qDebug() << "inside write done.";
}