问题背景
将VS+QT(MSVC)环境下编写的代码转到纯QT环境下,并更改编译环境为MinGW后,所用的大华相机SDK头文件“IMVApi.h”报错:error: expected constructor, destructor, or type conversion before '(' token
原因
上述错误是由于MSVC环境下的 _declspec
在MinGW下应该使用正确的拼写 __declspec
,并确保所有相关宏在非Windows环境下被忽略。
即,MSVC环境下的“IMVApi.h”头文件 中:
#if (defined (_WIN32) || defined(WIN64))
#ifdef IMV_API_DLL_BUILD
#define IMV_API _declspec(dllexport)
#else
#define IMV_API _declspec(dllimport)
#endif
#define IMV_CALL __stdcall
#else
#define IMV_API
#define IMV_CALL
#endif
在MinGW环境应该修改为:
#if (defined (_WIN32) || defined(WIN64))
#ifdef IMV_API_DLL_BUILD
#define IMV_API __declspec(dllexport)
#else
#define IMV_API __declspec(dllimport)
#endif
#define IMV_CALL __stdcall
#else
#define IMV_API
#define IMV_CALL
#endif