问题分析
明明opencv路径下存在opencv_world4100d.dll动态库,却找不到,
就是运行时找不到该动态库
添加到运行时
CMakeLists.txt 结尾添加这个,将运行时的代码添加到build文件夹下。
add_custom_command(TARGET ${
PROJECT_NAME}
POST_BUILD
COMMAND ${
CMAKE_COMMAND} -E copy_directory
"${OpenCV_RUNTIME_DIR}" "$<TARGET_FILE_DIR:${PROJECT_NAME}>")
但是能解决,不知道为什么?
经过一系列排查 才得出结论。。md我太蠢了
排查过程
前提:
- lib库添加到系统环境变量
- bin库添加到系统环境变量
- 已经确保该路径下包含缺失的opencv_world4100d.dll动态库
在此前提下,编译通过,运行时找不到该动态库,这是为什么???
1. 复现一个最小示例
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
std::cout << "OpenCV version: " << CV_VERSION << std::endl;
return 0;
}
你会发现能成功运行不会报错!编辑器做了“死代码剪裁/优化”!并没有真正的去调用dll库!!
2. 接着修改最小的示例
真正的去调用这个函数,会引用动态库
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/dnn.hpp>

最低0.47元/天 解锁文章
9317

被折叠的 条评论
为什么被折叠?



