Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 运行用cmake生成的exe时出错_Opencv_Cmake - Fatal编程技术网

Opencv 运行用cmake生成的exe时出错

Opencv 运行用cmake生成的exe时出错,opencv,cmake,Opencv,Cmake,我正在发现OpenCV v4.1。我下载了ready to go build版本,并将其解压缩到我的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 "p

我正在发现OpenCV v4.1。我下载了ready to go build版本,并将其解压缩到我的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,代码执行无法继续。正在重新安装[…]”

我已经尝试将环境变量放入系统路径,将库复制到源文件夹,我还使用了:

link_library("path")
我还把发电机换成了VS 1,这也没用

有趣的是,我可以用CMD运行我的程序,而且运行得非常好。仅当我尝试在visual studio中调试时才会发生错误

编辑:OS:Windows 10


编辑2:我真的很累,因为这是一个.dll而不是.lib问题,正如@PiotrK警告我的那样。对不起,你提出了这么愚蠢的问题。谢谢你们的回答。只需将dll复制粘贴到exe目录即可解决问题。有没有更干净的方法来链接.dll,这样我就不需要复制粘贴它了?

您可以使用
find\u 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}) 

从讨论中判断,问题不在于编译,而在于执行

我真的很好奇为什么你会遇到.lib而不是.dll的问题,但现在让我们暂且不谈

在Visual Studio中右键单击project->
属性
->
调试
->
工作目录
,并指定可执行文件的完整路径(编辑可执行文件本身)


保存并重试

在Win 10操作系统上是否有效?因为我怀疑win是否支持查找软件包,因为linux Doe我不太熟悉Windows 10中的具体细节,但是find_package()用于加载外部软件包,并且无论操作系统如何都可以工作。在您的情况下,仅路径会更改。但请注意,独立exe工作正常,vs studio中的调试失败。这应该是CMake中的链接错误。即使在Ubuntu中,它也可以在cmd中工作,但由于CMake中的配置不正确,在IDE中会出现问题。opencv_world410d.lib是否位于路径_to_lib_文件夹中?是的。我确信这一点。