Я создал тестовое приложение для сторонней библиотеки, которую я использую, она прекрасно компилируется, но, похоже, никогда не ударит __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.";
}
Я только что понял, что вы пытаетесь определить функцию WriteDone для класса CMDCDBurner
,
Попробуйте переместить функцию перед основным методом и не указывать CMDCDBurner::
:
void __stdcall WriteDone(int DeviceId, bool Failed, void *arg)
{
qDebug() << "inside write done.";
}
Других решений пока нет …