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