我在连接opencv库(2.3.1)时遇到了问题,无法找到解决方法。我使用的是qtCreator以及预编好的vc10动态库文件。下面是我到现在为止所做的工作:
.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)时,它编译但不能正确地加载库,它用代码-1073741515“意外退出”。我不明白为什么..。正如您从.pro文件中看到的,我链接了imgproc库,就像highgui一样,但是它仍然不能工作!
有什么建议吗?
编辑
好的,问题是visual创建的库具有与g++不同的命名约定,这就是它不能工作的原因。如果这是真的,我仍然无法解释为什么它适用于那些高调的人..有什么想法吗?
发布于 2011-12-23 15:09:17
这是什么版本的Opencv?我建议尝试最新的2.3,使用CMake而不是.pro文件,后者是整个项目的构建系统。
然后,您只需在CMakeLists.txt上文件->open-项目,您就可以查看如何使用CMake设置示例。
如果这是最新的,那么1) highgui使用QT,因此它可能会更好地使用qt创建者,2)在windows上使用.pro的构建可能没有经过测试;对CMake的不可避免的需求也就不足为奇了。
编辑:查看库的CMakeLists.txt文件..。
# 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库:
define_opencv_module(imgproc opencv_core)发布于 2011-12-19 07:57:15
那么,您不应该使用MSVC版本的Qt吗?
https://stackoverflow.com/questions/8556228
复制相似问题