我想在我的班级中使用QThreadSynchronizer,就像这样
#ifndef _MULTIWATCHER
#define _MULTIWATCHER
#include <QThread>
#include <QFutureSynchronizer>
#include "globals.h"
class MultiWatcher : public QThread
{
Q_OBJECT
public:
signals:
void allDone();
public:
void run() override;
QFutureSynchronizer<FocusResult> _sync;
};
#endif
然而,当我尝试构建它时,我得到以下链接错误
1>C:\Qt\5.7\msvc2015_64\include\QtCore/qvector.h(134): error C2182: 'at':
illegal use of type 'void'
1>C:\Qt\5.7\msvc2015_64\include\QtCore/qvector.h(135): error C2182: '[]':
illegal use of type 'void'
1>C:\Qt\5.7\msvc2015_64\include\QtCore/qvector.h(136): error C2182: '[]':
illegal use of type 'void'
etc ...
实际上,如果我注释掉整个类(如果QThreadSynchronizer被QFuture替换,它也是相同的),我会得到相同的错误,并且只是尝试包含两个包含文件,就像QThread和QFuture / QThreadSynchronizer彼此不兼容一样。所以以下也没有链接!
#ifndef _MULTIWATCHER
#define _MULTIWATCHER
#include <QThread>
#include <QFuture>
#endif
有什么想法吗?
答案 0 :(得分:0)
通过将“公共语言运行时支持”选项从“公共语言运行时支持/ clr”更改为“无公共语言运行时支持”,为QT生成的moc_multiwatcher.cpp文件解决了该问题。这些文件位于解决方案浏览器的“生成文件” - >“调试”部分,可以通过右键单击该文件并转到属性来访问该文件的clr设置。我希望这对其他在c ++ / clr / QT视觉工作室项目中出现奇怪链接错误的人有用。