C++ 在Windows上使用Qt和opencv生成问题

C++ 在Windows上使用Qt和opencv生成问题,c++,windows,qt,opencv,C++,Windows,Qt,Opencv,我想在WindowsXP上使用opencv创建一个带有Qt的gui应用程序。我以前使用过Qt和opencv,但从未一起使用过。长话短说,我无法让opencv与Qt一起工作 在我搜索过的所有论坛上,只有零星的信息,通常没有答案,我在这里总结了我所采取的所有步骤 下载了适用于Windows的Qt SDK(4.6.3),并成功使用了一段时间 下载了opencv 2.3.1 megapack for Windows,包括二进制文件。我成功地编译了包含opencv的Qt项目,但任何opencv函数调用都会

我想在WindowsXP上使用opencv创建一个带有Qt的gui应用程序。我以前使用过Qt和opencv,但从未一起使用过。长话短说,我无法让opencv与Qt一起工作

在我搜索过的所有论坛上,只有零星的信息,通常没有答案,我在这里总结了我所采取的所有步骤

  • 下载了适用于Windows的Qt SDK(4.6.3),并成功使用了一段时间
  • 下载了opencv 2.3.1 megapack for Windows,包括二进制文件。我成功地编译了包含opencv的Qt项目,但任何opencv函数调用都会导致崩溃。我在一些论坛上读到,Windows megapack中的二进制文件不支持Qt,我必须自己构建opencv
  • 我下载了CMake的最新版本(2.8)
  • 我从这里下载了opencv的源代码:
  • 我下载了Qt版本的源代码(4.6.3)
  • 我找到了旧版本的VisualStudio2005
  • 我用CMake创建了一个VS2005项目,检查对Qt的支持。(
    已选中)
  • 我在VS2005中构建了opencv。它创建了大多数库,但不是所有库
    Highgui
    是失败的。问题:
    Qt\4.6.3\src\corelib\global\qconfig.h
    未找到。我下载的源代码中根本没有
    qconfig.h
    !我发现一些模板
    qconfig-large.h
    qconfig-small.h
    等,所以我将其中一个模板重命名为
    qconfig.h
    。现在我看到一个满是链接器错误的屏幕
  • 我下载了最新的Qt源代码(4.8.1)。现在有一个源文件
    qbenchmark.h
    ,其中包含无法找到的
    qtest/qbenchmarkmetric.h
  • 我放弃了,试着明戈
  • 我下载了最新的MinGW(2011.11.18)
  • 我将CMake设置为生成MinGW makefile,但出现以下错误:
  • 的确,模块/平台目录中有一个
    Windows-g++.cmake
    文件,但它引用的
    Windows gcc.cmake
    不存在

    是否有人在Windows上构建了支持Qt的opencv,如果有,是如何实现的

    编辑

    问题肯定出在Qt源上。我成功地生成了一个MinGW makefile,构建过程一直正常,直到它在
    src/testlib/qtestsystem.h
    中停止,因为
    QtCore/qefersedtimer.h
    中有一个include,该文件位于完全不同的目录中Qt是否发布了不完整的源代码,还是我做错了什么

    Edit2

    我的痛苦还在继续。我把一切都打扫干净,重新开始。这一次甚至没有尝试Visual Studio

  • 我下载了最新的Qt-libs源代码(4.8.1)
  • 我下载了最新的MinGW(2011.11.18)
  • 使用CMake,我成功地创建了一个Makefile,并使用MinGW构建了它。我得到了一些闪亮的新库(
    libopencv_core231
    ,etv.)。我很高兴,但我很快就庆祝了,这是多么错误啊
  • 我下载了最新的QtSDK(奇怪的是,它是4.8.0,所以我将QtCreator设置为使用4.8.1),并创建了一个没有opencv的测试程序,以查看它是否有效。成功了
  • 我尝试使用opencv,只是读取和显示一幅图像。它不起作用<代码>以代码-1073741511退出
  • 我尝试在Qt Creator之外直接运行
    .exe
    。它抱怨缺少
    libstdc++-6.dll
  • 我搜索了它,在我的MinGW安装(c:\MinGW\bin,958KB)中找到了,在我的Qt安装(c:\Qt\MinGW\bin,793KB)中找到了一个——这个MinGW与Qt捆绑在一起
  • 我尝试了这两种方法,将它们复制到我的
    .exe
    所在的同一文件夹中,但两种方法都不起作用。我得到了“程序入口点_ZNSt9exceptionD2Ev在动态链接库libstdc++-6.dll中找不到”这两个选项。这是在调试中,所以我尝试发布,但我得到了一个类似的错误,没有找到其他入口点
  • 我搜索了论坛,发现了一些建议,建议我应该静态链接libstdc++。我在文件
    c:\Qt\mkspecs\win32-g++\QMAKE.conf
    中的
    QMAKE\u LFLAGS=
    QMAKE\u LFLAGS\u DEBUG=
    行插入了
    -static libgcc-static libstdc++
    。即使在重新启动Qt Creator并重建之后,这也没有任何效果。如果我不复制
    libstdc++-6.dll
    ,它仍然需要它
  • 当然,我的没有opencv的简单测试程序是从
    exe
    运行的,不需要任何
    libstdc++-6.dll
    ,这意味着我的opencv构建负责吗?我想重新构建opencv,但我找不到任何引用libstdc++的CMake设置

    这可能是个线索: 当使用一个
    libstdc++-6.dll
    文件时,关于缺少入口点的错误会提到QtGui4.dll。我有一个调试版本,所以它应该是QtGui*d*4.dll,不是吗?调试和发布是否有不同的
    libstdc++
    s?无论哪种方式,我都试图构建发行版,但也没有成功,同样的错误

    这个星球上没有一个人在Windows xp上尝试将Qt与QtCreator和opencv 2.3一起使用并成功了吗?通过搜索所有论坛和Qt档案,我找不到任何人。我已经准备好在Linux中进行开发,但我迟早需要一个Windows版本


    我试图抵制黑暗面的诱惑,黑暗面在我耳边低语,让我忘记Qt、MinGW、g++、opencv,并试图用Visual Basic拼凑一些东西。哦,恐怖

    您应该从源代码构建OpenCV,正如您已经做的那样,这并不麻烦。请注意,OpenCV的最新版本可以使用和w/o Qt构建。Highgui可以选择使用Qt!您可以选择是否使用Qt进行构建

    很长一段时间以来,我一直在使用Qt库和OpenCV。我从来没有使用过SDK,相反,我
    CMake Error at C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-g++.cmake:1 (INCLUDE):
      include could not find load file:
    C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-gcc.cmake
    Call Stack (most recent call first):
    C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/CMakeCXXInformation.cmake:59 (INCLUDE)
    
    find_package(OpenCV)
    find_package(Qt4 ${VOLE_MINIMUM_QT_VERSION} COMPONENTS QtCore QtGui)
    find_package(Qt4 ${VOLE_MINIMUM_QT_VERSION} COMPONENTS QtOpenGL)
    
    qt4_wrap_cpp(moc_sources ${vole_module_moc_sources})
    qt4_wrap_ui(uic_sources ${vole_module_ui_sources})
    qt4_add_resources(rcc_sources ${vole_module_rcc_sources})