我在从opencv(2.3.1)链接库时遇到问题,但找不到解决它的方法.. 我正在使用qtCreator和mingw以及预先构建的vc10动态lib文件。 所以,这是我到目前为止所做的事情:
.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 libs链接起来就像highgui一样,但它仍然无法工作!
有什么建议吗?
修改
好的,问题是visual studio创建的库具有与g ++不同的命名约定,这就是为什么它不起作用..如果这是真的,我仍然无法解释为什么它适用于highgui库..任何想法?
答案 0 :(得分:1)
你不应该使用Qt的MSVC版本吗?
答案 1 :(得分:0)
这是哪个版本的Opencv?我建议尝试最新的2.3,并使用CMake而不是.pro文件,这是整个项目的构建系统。
然后你只需要在CMakeLists.txt上文件 - >打开项目,你就可以看看如何使用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 lib:
define_opencv_module(imgproc opencv_core)