问题
项目开发期间,需要在vs2015下使用QT调用别人开发好的C# dll。本人发现,在设置完公共语言支持CLR后,QT的头文件QtCharts会和CLR环境产生冲突,导致几十条这种C2182错误。
错误C2182 “t”: 非法使用“void”类型 (编译源文件 bolt.cpp) qt E:\QT5.9\5.9.7\msvc2015\include\QtCore\qvector.h
错误 C2182 “at”: 非法使用“void”类型 (编译源文件 bolt.cpp) qt E:\QT5.9\5.9.7\msvc2015\include\QtCore\qvector.h
解决方案
将原头文件
#include <QtCharts>
改为:
#pragma unmanaged
#include <QtCharts>
#pragma managed
便可编译成功。
参考链接
关于该问题,中文博客这类资料较少,在这里作记录,为后面的人避坑。本人参考链接如下:
https://stackoverflow.com/questions/29610546/qvector-h74-error-c2182-t-illegal-use-of-type-void
有用请随手点赞+关注,谢谢!
(本人小硕士生一枚,主要研究方向包括:计算机视觉、三维重建、机器人等)