我正在发现OpenCV v4.1。我下载了准备就绪的构建版本,并将其解压缩到C驱动器中。我正在使用VS studio 16和cmake来构建项目。我使用忍者生成文件。
这就是我的cmake像atm的样子:
cmake_minimum_required (VERSION 3.8)
add_executable (opencv-fun "opencv-fun.cpp" "opencv-fun.h")
target_link_libraries(opencv-fun "path_to_lib_folder/opencv_world410d.lib")
这是我遇到的错误:
“由于找不到opencv_world410d.lib,因此无法执行代码。重新安装[...]”
我已经尝试过将env变量放入系统路径,将lib复制到源文件夹,我也使用过:
link_library("path")
我也将生成器更改为VS one,但这都没有帮助。
所有这些有趣的是,我可以在CMD中运行我的程序,并且运行得很好。仅当我尝试在Visual Studio中调试时才会发生错误。
编辑:操作系统:Windows 10
编辑2:我不得不感到非常疲倦,因为这是一个.dll而不是.lib问题,就像@PiotrK警告我一样。很抱歉提出这样的愚蠢问题。谢谢大家的回答。只需将dll复制粘贴到exe目录即可解决问题。有没有更干净的方法来链接.dll,这样我就不需要复制粘贴了?
答案 0 :(得分:1)
您可以使用find_package()
和set()
函数来指定opencv目录的路径并包括这些目录。
这就是我的CMake在Ubuntu中的样子。
cmake_minimum_required(VERSION 3.5)
project(test)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-std=c++11 -O3")
set(OpenCV_DIR /home/shayan/opencv-4.1.0/local/share/OpenCV)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(test main.cpp)
target_link_libraries(test ${OpenCV_LIBS})
答案 1 :(得分:0)
从讨论来看,问题不在于编译,而在于执行。
我真的很好奇为什么会出现.lib而不是.dll问题,但是让我们暂时保留它。
在Visual Studio中右键单击项目-> Properties
-> Debugging
-> Working Directory
,然后指定可执行文件的完整路径(忽略可执行文件本身)。
保存并重试