我如何在使用Mingw 32编译的QT框架中使用与MSVC 14.0编译的库

  • 本文关键字:编译 MSVC 框架 QT Mingw c++ qt opencv flir
  • 更新时间 :
  • 英文 :


我目前正在使用QT Creator 4.8.1和QT 5.11.1编译的Mingw 32bit开发的GUI。该应用将控制不同组件,例如相机和传感器。我在项目的成像部分遇到麻烦。我们从Flir购买了SDK附带的相机:Spinnaker。

我想使用相机以获取我使用OpENCV处理的图像。我已经安装了OpenCV,并且正在工作。问题来自供应商的SDK。为了使用它,我将库加载在.pro文件

> INCLUDEPATH += "$$PWDlibSpinnakerinclude"
> 
> 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 版本的版本声明。对于示例,_msc_ver = 1900对于MSVC 14.0。

我无法通过此错误,我添加了套件桌面QT 5.9.6 MSVC2015 32BIT与编译器Microsoft Visual C 编译器14.0(AMD64_X86)一起,在我的项目中IDE也不是OpenCV。

我想问题来自于我尝试在同一项目中使用2个不同编译器编译的库。有可能这样做吗?为了适合我的项目,我需要重新编译大三角器SDK吗?谢谢!

"如何在用mingw 32编译的QT框架中使用与MSVC 14.0编译的库?" - 您可能不能。

C 没有稳定的供应商中性ABI。意义;所有(通常)必须使用完全相同的编译器进行编译,以便将其成功链接在一起(或在运行时正确工作)

甚至用不同的版本编译的东西相同编译器的编译器可能不兼容。

有例外,但是一般规则是:构建 you 您与链接完全相同的编译器

最新更新