运行使用cmake构建的exe时出错

时间:2019-07-11 11:09:33

标签: opencv cmake

我正在发现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,这样我就不需要复制粘贴了?

2 个答案:

答案 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,然后指定可执行文件的完整路径(忽略可执行文件本身)。

保存并重试