使用CMake在64位窗口上安装和链接OpenCV 2.4.3



我目前正试图将一个依赖OpenCV的CMake项目从Linux转换到Windows,但我在将库链接到可执行文件时遇到了问题。

我在下面发布了大致的CMakeLists.txt文件,其中遗漏了一些私人内容:

project(my_project_name)
cmake_minimum_required(VERSION 2.8)
SET(CMAKE_CXX_FLAGS "-g -Wall")
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../bin)
FIND_PACKAGE(OpenCV REQUIRED)
IF(NOT OpenCV_FOUND)
MESSAGE(FATAL_ERROR "OpenCV not found")
ENDIF()
SET(PROJECT_HDRS
#headers here
)
SET(PROJECT_SRCS
#sources here
)
add_executable(${PROJECT_NAME} ${PROJECT_SRCS})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS})

这个CMakeLists.txt文件在Linux上运行良好,但在Windows上链接时遇到问题。我的第一直觉是这是一个糟糕的OpenCV安装?以下是我在安装OpenCV 时使用的大致步骤

  1. 下载OpenCV 2.4.3可执行文件(自解压档案)
  2. 提取到某个目录
  3. 使用CMake-Gui配置和生成OpenCV.sln
  4. 在Visual Studio C++2010学习版中打开,并在调试和发布配置中构建ALL_build项目
  5. 构建INSTALL项目

当我尝试构建自己的项目时,我会返回错误"对'cv::waitKey(int)'的未定义引用"错误,这让我认为这是链接器问题。我曾尝试直接指向.lib文件,如:

target_link_libraries(${PROJECT_NAME} C:/someDirectory/opencv_core243.lib)

但我仍然会犯同样的错误。

我还尝试了StackOverflow线程中描述的方法:这里和这里。

如果我遗漏了一些明显的东西,我会事先道歉,但这或多或少是我第一次在windows上开发,我的想法已经用完了。

据我所知,问题是visual studio2010vc++2010随附。net framework 4.5

将其降级为.net framework4(即卸载.net 4.5并安装4.0)。这将解决问题。。。解决上述问题时,我把头撞到桌子上。。否则用新的Service pack 修补visual c++

有点晚了,但。。。让我们开始

对我来说,这个教程是完美的

http://kevinhughes.ca/tutorials/opencv-install-on-windows-with-codeblocks-and-mingw/

最新更新