我目前正在尝试将 CMake 项目从 Linux 转换到依赖于 OpenCV 的 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 时使用的大致步骤
- 下载 OpenCV 2.4.3 可执行文件(自解压存档)
- 解压到某个目录
- 使用 CMake-Gui 配置生成 OpenCV.sln
- 在 Visual Studio C++ 2010 Express 中打开并在调试和发布配置中构建 ALL_BUILD 项目
- 构建安装项目
当我尝试构建自己的项目时,我得到错误“未定义对'cv :: waitKey(int)'错误的引用,这让我认为这是一个链接器问题。我试图直接指向.lib文件, 如:
target_link_libraries(${PROJECT_NAME} C:/someDirectory/opencv_core243.lib)
但我仍然得到同样的错误。
我还尝试了这些 StackOverflow 线程中描述的方法: 这里和这里。
如果我遗漏了一些明显的东西,我会事先道歉,但这或多或少是我第一次在 Windows 上开发,我的想法已经不多了。