QtConcurrent :: run () не принимает функцию __stdcall / WINAPI

Я пытался выполнить функцию DLL, которая имеет __stdcall соглашение о вызовах с использованием QtConcurrent::run(), но я получаю ошибки компиляции.

Я уменьшил проблему до этого примера кода:

__stdcall void dllFunc() {
qDebug() << "test";
}

void test() {
QtConcurrent::run(dllFunc);
}

Если я удалю __stdcall код компилируется и работает нормально. В противном случае я получаю эти ошибки компиляции:

error: invalid conversion from 'void (*)()' to 'void (*)()'
error:   initializing argument 1 of 'QFuture<T> QtConcurrent::run(T (*)()) [with T = void]'

Почему это происходит, и какой лучший обходной путь?

2

Решение

Что ж, для обхода проблемы я использовал функцию-оболочку с той же сигнатурой, но без __stdcall конвенции:

__stdcall int dllFunc(int param1, void *param2) {
qDebug() << "test";
return 0;
}

int dllFuncWrapper(int param1, void *param2) {
return dllFunc(param1, param2);
}

void test() {
QtConcurrent::run(dllFuncWrapper);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]