QtCreatorと&OpenCvをリンクする

opencv(2.3.1)のライブラリをリンクする際に問題があり、解決する方法が見つかりません。 私はmingwと事前に構築されたvc10ダイナミックlibファイルでqtCreatorを使用しています。 ですから、今まで私がやったことはここにあります:

.proファイル:

TEMPLATE = app
INCLUDEPATH += "E:/opencv/build/include/"
INCLUDEPATH += "E:/opencv/build/include/opencv/"
INCLUDEPATH += "E:/opencv/build/include/opencv2/"

INCLUDEPATH += $$PWD/../opencv/build/x86/vc10
DEPENDPATH += $$PWD/../opencv/build/x86/vc10

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_core231
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_core231d
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_highgui231
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_highgui231d
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_imgproc231
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_imgproc231d
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_calib3d231
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_calib3d231d
...

私はopencvのhighguiライブラリを使ったアプリケーションをテストしました。コンパイルしてうまく動作しましたが、cvPyrDown(imgproc_c.hから)を使用しようとするとコンパイルされますが、ライブラリを正しく読み込めませんでした。 "-explicit-code" -1073741515 。 私はそれがなぜ..proファイルから見ることができるのか分かりません。imgprocライブラリをhighguiのようにリンクしましたが、それでも動作しません!
助言がありますか ?

編集

確かに、問題は、Visual Studioがg ++とは違う命名規則でライブラリを作成しているからです。それがうまくいかない理由です。これが真実なら、それはなぜhighguiライブラリで動作するのか説明できません。

1

2 答え

QtのMSVCバージョンを使用してはいけませんか?

1
追加された
Mingwはそれを扱うことができます。(これはhighguiライブラリで動作します..)
追加された 著者 elephantintheroom,

Opencvのどのバージョンですか?最新の2.3を試して、プロジェクト全体のビルドシステムである.proファイルの代わりにCMakeを使うことをお勧めします。

Then you just file->open-project on the CMakeLists.txt, and you can just look at how examples are set up with CMake.

この最新の場合、1)highguiはQTを使用するので、qt作成者にとってはよりうまくいくかもしれません。 CMakeのやむを得ない必要性は驚くことではないでしょう。

Edit: Look at the CMakeLists.txt files for the libraries ....

# CMakeLists.txt for /modules/highgui
 #YV
if (HAVE_QT)
if (HAVE_QT_OPENGL)
    set(QT_USE_QTOPENGL TRUE)
endif()
INCLUDE(${QT_USE_FILE})

SET(_RCCS_FILES src/window_QT.qrc)
QT4_ADD_RESOURCES(_RCC_OUTFILES ${_RCCS_FILES})

SET(_MOC_HEADERS src/window_QT.h )
QT4_WRAP_CPP(_MOC_OUTFILES ${_MOC_HEADERS})

set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} ${QT_LIBRARIES} ${QT_QTTEST_LIBRARY})
set(highgui_srcs ${highgui_srcs} src/window_QT.cpp ${_MOC_OUTFILES} ${_RCC_OUTFILES} )
endif()

if(WIN32)
   if(NOT HAVE_QT)
      set(highgui_srcs ${highgui_srcs} src/window_w32.cpp)
   endif()
  set(highgui_srcs ${highgui_srcs} src/cap_vfw.cpp src/cap_cmu.cpp   src/cap_dshow.cpp)
   if(HAVE_MIL)

    set(highgui_srcs ${highgui_srcs} src/cap_mil.cpp)
endif()
endif()

if(UNIX)
if(NOT HAVE_QT)        
    if(HAVE_GTK)
        set(highgui_srcs ${highgui_srcs} src/window_gtk.cpp)
    endif()
endif()
 ....
endif()

しかし、 "imgproc"のCMakeLists.txtは特定のチェックをしません...ちょうどメインのopencv libにバックを渡します:

 define_opencv_module(imgproc opencv_core)
0
追加された
恐らく。あなたは本当にmingwでopencvを再構築する必要があります... qmakeではなく、cmakeを使用してください... OpenCVがテスト/開発されたものですので、qmakeを主張するならば、あなたは不必要な障害を抱えています。
追加された 著者 peter karasev,
私はopencv(2.3.1)の最新バージョンを使用しています。ライブラリがmsvc(g ++以外の命名規則を使用しています)で構築されている場合、highguiがqtを使用するかどうかは本当に重要ですか?
追加された 著者 elephantintheroom,