gpt4 book ai didi

c++ - QtConcurrent::run() 不接受 __stdcall/WINAPI 函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:16 24 4
gpt4 key购买 nike

我试图使用 QtConcurrent::run() 执行具有 __stdcall 调用约定的 DLL 函数,但出现编译错误。

我已将问题简化为这个示例代码:

__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]'

为什么会发生这种情况,最好的解决方法是什么?

最佳答案

好吧,为了解决这个问题,我最终使用了一个具有相同签名但没有 __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);
}

关于c++ - QtConcurrent::run() 不接受 __stdcall/WINAPI 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17428846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com