我为我正在使用的第三方库创建了一个测试应用程序,它编译得很好,但似乎永远不会命中__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.";
}
答案 0 :(得分:1)
我刚刚意识到您尝试为类CMDCDBurner
定义WriteDone函数。
尝试在main方法前移动函数,省略CMDCDBurner::
:
void __stdcall WriteDone(int DeviceId, bool Failed, void *arg)
{
qDebug() << "inside write done.";
}