我目前正在使用使用 MinGW 32 位编译的 Qt Creator 4.8.1 和 Qt 5.11.1 开发的 GUI。该应用程序将控制不同的组件,例如相机和传感器。我在项目的成像部分遇到问题。我们从 FLIR 购买了带有 SDK 的相机:Spinnaker。
我想使用相机来获取我将使用 OpenCV 处理的图像。我已经安装了 OpenCV,它正在工作。问题来自供应商的 SDK。为了使用它,我将库加载到 .pro 文件中
> INCLUDEPATH += "$$PWD\lib\Spinnaker\include"
>
> win32:CONFIG(release, debug|release): LIBS +=
> -L$$PWD/'lib/Spinnaker/lib/vs2015/' -lSpinnaker_v140 else:win32:CONFIG(debug, debug|release): LIBS +=
> -L$$PWD/'lib/Spinnaker/lib/vs2015/' -lSpinnaker_v140 else:unix: LIBS += -L$$PWD/'lib/Spinnaker/lib/vs2015/' -lSpinnaker_v140
>
> INCLUDEPATH += $$PWD/'lib/Spinnaker/lib/vs2015' DEPENDPATH +=
> $$PWD/'lib/Spinnaker/lib/vs2015'
>
> win32:CONFIG(release, debug|release): LIBS +=
> -L$$PWD/'lib/Spinnaker/lib/vs2015/' -lSpinnakerGUI_WPF_v140 else:win32:CONFIG(debug, debug|release): LIBS +=
> -L$$PWD/'lib/Spinnaker/lib/vs2015/' -lSpinnakerGUI_WPF_v140 else:unix: LIBS += -L$$PWD/'lib/Spinnaker/lib/vs2015/' -lSpinnakerGUI_WPF_v140
>
> INCLUDEPATH += $$PWD/'lib/Spinnaker/lib/vs2015' DEPENDPATH +=
> $$PWD/'lib/Spinnaker/lib/vs2015'
然后,我加载需要使用该库的特定 .h 文件。这就是一切开始混乱的地方:编译时,库的 .h 文件之一发生错误。此错误存在于“未知平台”中:
#if defined (_MSC_VER)
# if defined (_WIN64)
# define PLATFORM_NAME "Win64_x64"
# else
# define PLATFORM_NAME "Win32_i86"
# endif
#elif defined (__GNUC__)
# define GENICAM_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
# if defined (__LP64__)
# if defined (__linux__)
# define PLATFORM_NAME "Linux64_x64"
# elif defined (__APPLE__)
# define PLATFORM_NAME "Maci64_x64"
# else
# error Unknown Platform
# endif
# else
# if defined (__linux__)
# define PLATFORM_NAME "Linux32_i86"
# elif defined (__APPLE__)
# define PLATFORM_NAME "Maci64_x64"
# elif defined (VXWORKS)
# define PLATFORM_NAME "VxWorks_PPC"
# else
# error Unknown Platform
# endif
# endif
#else
# error Unknown Platform
#endif
发生此错误是因为未定义 _MSC_VER。该变量应该根据 Microsoft Visual C++ 版本的版本进行声明。例如,对于 MSVC++ 14.0,_MSC_VER = 1900。
我无法通过此错误,我使用编译器 Microsoft Visual C++ Compiler 14.0 (amd64_x86) 将 Kit Desktop QT 5.9.6 MSVC2015 32bit 添加到我的项目中,但是当我使用它时,IDE 不再对 Qt 进行识别,也没有是OpenCV。
我想问题出在我尝试在同一个项目中使用用 2 个不同编译器编译的库这一事实。有可能这样做吗?我需要重新编译 Spinnaker SDK 以适应我的项目吗?谢谢!