最近开始着手做上位机界面,开始将之前写好的c++项目打包DLL(动态链接库文件),以供其他的vs项目使用。已经经过验证,自己在打包的过程中出现了一些问题,此博客用来记录问题以及打包过程。

1、打开VS2015,点击:新建—》项目—》VC+±-》win32项目–》下一步-,选择DLL,将下面的对勾画上。

项目新建完成。

opencv中怎么自己封装函数 opencv封装成dll_opencv


opencv中怎么自己封装函数 opencv封装成dll_#include_02


opencv中怎么自己封装函数 opencv封装成dll_qt_03


opencv中怎么自己封装函数 opencv封装成dll_qt_04


2、完成创建项目之后,自动生成一些文件。dllmain文件相当于之前常规项目的main函数,不需要管就可以。

将调试器选择成release(非常重要),X86或者X64根据自己安装的软件所决定,我的opencv安装的是X86所以我选择的是X86.

opencv中怎么自己封装函数 opencv封装成dll_c++_05


3、右击头文件新建一个.h文件,取名字为Dll.h,同理新建一个.cpp文件,取名为Dll.cpp,

opencv中怎么自己封装函数 opencv封装成dll_c++_06


4、头文件是作了一个概括,这个概括包括了定义的函数,而函数的具体实现,就在Dll.cpp中完成。

在Dll.h文件中写以下代码:

在这里插入代码片
#pragma once//防止重复编译文件报错

//这边需要配置openCV:网上有很多配置opencv的资源可以去参考
#include <iostream>
#include "opencv2/opencv.hpp"

using namespace std;
using namespace cv;

//函数声明
extern __declspec(dllexport)void ShowImage();

在.cpp文件中写函数的实现过程:

#include "stdafx.h"
#include <iostream>
#include "opencv2/opencv.hpp"
#include  "  Dll.h  "

using namespace std;
using namespace cv;

void ShowImage()
{
	//读取图片
	Mat src = imread("C:\\Users\\Administrator\\Desktop\\1.png");
	//显示图片
	imshow("图片",src);
}
```cpp
在这里插入代码片

写完之后会有opencv相关的函数等爆红线,这边的原因是没有配置opencv,网上资源很多,自行去查找如何在vs中配置opencv(包含目录、库目录、附加依赖项等配置博客上很多资料)。配置完成就没有这个问题了。

`

opencv中怎么自己封装函数 opencv封装成dll_opencv中怎么自己封装函数_07


``

opencv中怎么自己封装函数 opencv封装成dll_#include_08

完成之后,右击项目点击生成。打开项目文件中的release文件夹发现生成了6个文件。

opencv中怎么自己封装函数 opencv封装成dll_opencv中怎么自己封装函数_09


opencv中怎么自己封装函数 opencv封装成dll_qt_10


在我们完成DLL文件生成后,我们要把生成的dll文件应用到其他的项目中只需要CreatDLL.dll文件、CreatDLL.lib文件、DLL.h文件,给另一个工程使用。使用方法如下所示:

1、

opencv中怎么自己封装函数 opencv封装成dll_opencv_11


2、将将调试器选择成release(非常重要),X86或者X64根据自己安装的软件所决定,我的opencv安装的是X86所以我选择的是X86.

3、在新建项目的文件夹中,新建两个文件夹,一个名字叫include,吧DLL.h文件拷贝进去,新建一个lib文件夹,将CreatDLL.lib拷贝进去,将DLL.h和CreatDLL.lib的文件路径添加到引用目录和库目录之中,将CreatDLL.lib复制进去附加依赖项中

opencv中怎么自己封装函数 opencv封装成dll_qt_12


在新建的项目中的。cpp文件中写main函数调用函数即可。

在这里插入代码片
#include "stdafx.h"
#include "DLL.h"

int main()
{
	ShowImage();
    return 0;
}
右键生成,将CreatDLL.dll复制到新出现的release文件夹中。调试运行即可

```至此已经完成完成包含opencv功能的DLL的打包以及运用到别的项目。有问题随时交流呀。

`