【问题标题】:QT - 3rd Party Callback Not Calling back?QT - 3rd 方回调不回调?
【发布时间】:2013-07-16 00:12:54
【问题描述】:

我已经为我正在使用的第 3 方库创建了一个测试应用程序,它编译得很好,但似乎从来没有命中 __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.";
}

【问题讨论】:

    标签: c++ qt stdcall


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,当我尝试它时会产生错误:C2761: 'void CMCDBurner::WriteDone(int,bool,void *)' : member function redeclaration not allowed
    • 它没有成功,但我联系了供应商,他们正在调查它,这似乎源于他们与 VS2010 编译器的兼容性,因为上述代码在 2008 年有效,感谢您的帮助!
    猜你喜欢
    • 2011-01-07
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2021-01-09
    • 2011-01-11
    相关资源
    最近更新 更多