Windows C++ 第三方库使用流程备忘录--OpenCV

目录

[三个东西:头文件、lib、dll 分别是什么?](#三个东西:头文件、lib、dll 分别是什么?)

[1. 头文件(.h / .hpp)](#1. 头文件(.h / .hpp))

[2. lib 文件(静态链接信息)](#2. lib 文件(静态链接信息))

[3. dll 文件(运行时真正代码)](#3. dll 文件(运行时真正代码))

[Windows 找 DLL 有规则。](#Windows 找 DLL 有规则。)


写一个 C++ 程序,用 OpenCV 打开摄像头。

实际上做了三件事:

复制代码
你的代码
   ↓
C++编译器
   ↓
生成exe
   ↓
Windows运行

中间涉及三个阶段:

复制代码
1. 编译阶段
2. 链接阶段
3. 运行阶段

三个东西:头文件、lib、dll 分别是什么?

cpp 复制代码
#include <opencv2/opencv.hpp>

cv::Mat img;

程序需要 OpenCV,但是编译器不知道:

cv::Mat 到底是什么?

所以需要:

1. 头文件(.h / .hpp)

作用:

告诉编译器"这个东西存在"

比如:

复制代码
opencv.hpp

里面告诉编译器:

cpp 复制代码
class Mat
{
    ...
};

class VideoCapture
{
    ...
};

相当于:说明书

cpp 复制代码
#include <opencv2/opencv.hpp>

就是读说明书。


2. lib 文件(静态链接信息)

例如:

cpp 复制代码
opencv_world4110.lib

作用:

告诉链接器,函数在哪里

比如你写:

复制代码
cv::imshow();

编译器知道:"哦,有这个函数",链接器问:"这个函数代码在哪?"

lib告诉它:

cpp 复制代码
imshow()
在opencv_world4110里面

然后生成:

复制代码
pROJCT.exe

3. dll 文件(运行时真正代码)

例如:这个才是程序运行时需要的。

复制代码
pROJCT.exe

opencv_world4110.dll 里面没有 OpenCV 的全部代码,它只是记录:

cpp 复制代码
我要调用opencv_world4110.dll里的函数

运行时:

Windows:

复制代码
启动 pROJCT.exe

↓

寻找 opencv_world4110.dll

↓

找到

↓

加载

↓

运行

如果找不到:

复制代码
0xC0000135

就是:DLL不存在,程序无法启动。

Windows 找 DLL 有规则。

它会在:

复制代码
1. exe所在目录
2. 系统目录
3. PATH环境变量目录

寻找。以前:

复制代码
D:\pROJCT\cmake-build-debug

    pROJCT.exe

但是:opencv_world4110.dll

在:

复制代码
D:\OpenCV\opencv\build\x64\vc17\bin

Windows:

cpp 复制代码
启动exe

寻找DLL

D:\pROJCT\cmake-build-debug
没有

系统目录
没有

PATH
没有

失败
相关推荐
程与留2 小时前
15_国际化和本地化:tr()、ts 文件、QM 文件、多语言切换
c++·qt
程与留4 小时前
14_Qt 样式表(QSS)入门(语法、选择器、美化实战)
c++·qt
欧特克_Glodon12 小时前
OpenCV计算机视觉开发入门与实践<二十七>:图像分割概述
c++·人工智能·opencv·计算机视觉
蒸蒸yyyyzwd12 小时前
cpp 选手秋招学习笔记 day21
c++·面试·八股
Interview Aid11213 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
CoderIsArt20 小时前
C#中UI 线程与 Dispatcher
开发语言·ui·c#
AI情绪识别开源1 天前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试
「QT(C++)开发工程师」1 天前
C++ auto 用法详解
开发语言·c++
OPEN-F1 天前
C++STL教程:容器适配器与实用工具
开发语言·c++