VS2010 + OpenCV 2.4.11 编写打包dll(具备移植性)

本文是一篇介绍如何将你写的opencv C++程序以及本地OPENCV 环境打包成一个dll(仅在Windows端),然后可移植在其他干净的电脑上运行的博客。
本文所用的IDE VS2010
OPENCV C++版本 2.4.11
首先,新建一个C++类库:
在这里插入图片描述
把opencv 源码和lib 文件放在该工程目录下:
在这里插入图片描述
我把opencv 源码文件夹 opencv opencv2 放在一起在opencv_source这个文件夹下:
在这里插入图片描述
然后与VS2010搭配使用的是VC10文件夹。
你只需要保留lib文件夹即可,其他的都可以删掉。在这里插入图片描述
打开工程属性:
最好调成release版本,因为会更小,编译的更快。
然后平台设为x64,因为我这里是64位编译的opencv。
项目默认值按照这里设置。
在这里插入图片描述
下面是如何设置包含目录和库目录,这是最重要的一环。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
你还需要opencv 的lib , 这样才能在一起编译。记住,在附加依赖项这一栏里,你需要写上所有的release版本的lib库文件,就是文件名不带字母 d 的:
opencv_calib3d2411.lib
opencv_contrib2411.lib
opencv_core2411.lib
opencv_features2d2411.lib
opencv_flann2411.lib
opencv_gpu2411.lib
opencv_highgui2411.lib
opencv_imgproc2411.lib
opencv_legacy2411.lib
opencv_ml2411.lib
opencv_objdetect2411.lib
opencv_ts2411.lib
opencv_video2411.lib
这些文件都是在这里找到:
你把不带 字母 d 的都写上为好,写多了不当紧。
在这里插入图片描述
写在连接器->输入->附加依赖项里,如下所示:
在这里插入图片描述
在这里插入图片描述
工程属性配置完毕。
接下来介绍源代码:

这里我的工程名字为AudioVideoDll, 那么你就需要在AudioVideoDll.h 这个头文件里加入到你所需要让调用程序使用的接口:
(关于 extern “C” _declspec(dllexport) 请自行百度)

// AudioVideoDll.h

#pragma once
#define _EXTERN_C_  extern "C"  _declspec(dllexport)
#include <string>
using namespace std;
_EXTERN_C_	int CalKaDun(char* _filename);

然后再在AudioVideoDll.cpp里写下你的源代码:

// 这是主 DLL 文件。根据需要引入你所需要的STL库与算法库,还有opencv库。

#include "stdafx.h"

#include "AudioVideoDll.h"
#include <stdio.h>

#include <time.h>
#include <iostream>
#include<iostream>
#include <string>
#include <cmath>
#include <vector>
#include<opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include "SFR.h"
using namespace cv;
using namespace std;

//有无卡顿
int CalKaDun(char* _filename){
	/*你的源代码*/
}

这里我仅仅简单介绍过程,所以源代码部分可以省略。事实上,一个大的过程编译成的动态链接库是很多函数接口暴漏出来的。

编译》》》》

点生成解决方案即可。

将生成的DLL 拿出来,这里就是
AudioVideoDll.dll

在这里插入图片描述

下面讲如何使用它:
新建一个C# 控制台程序即可,简单点。
设置成release版的:
在这里插入图片描述

在这里插入图片描述

先把C# 工程生成一下:
然后把AudioVideoDll.dll 放在 该C# 工程bin下:
在这里插入图片描述
C# 如何调用C++ DLL 我从简介绍即可:

//你的C++调用类Functions:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace CSharpUseAudioVideoDll
{
	class Functioncs
	{
		[DllImport("AudioVideoDll.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
		public extern static int CalKaDun(ref byte filename);
	}
}

//你的测试类Program:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSharpUseAudioVideoDll
{
	class Program
	{
		static void Main(string[] args)
		{
			byte[] srcBytes = System.Text.Encoding.ASCII.GetBytes("man_made.avi");
			Console.WriteLine("计算卡顿:");
			Console.WriteLine(Functioncs.CalKaDun(ref srcBytes[0]));
			Console.ReadKey();
		}
	}
}

下面又是一个重点:
如何移植:
先生成编译一下:
然后把你编译好的C# exe可执行文件和opencv C++的DLL与lib 文件放在一起即可

在这里插入图片描述
上面图片,VC10就是opencv c++ 的lib文件
AudioVideoDll.dll就是你打包的dll。
CSharpUseAudioVideoDll.exe就是你的C# exe。
其他是实验视频。
接下来的就是一组opencv c++ 的dll 了,把他们和你的AudioVideoDll.dll
CSharpUseAudioVideoDll.exe
放在一起。

放在一个文件夹内,移植到一台干净的电脑上即可运行:
在这里插入图片描述
完。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VS2019中使用Qt和OpenCV进行打包时,首先需要确保已安装了Qt和OpenCV,并将它们与VS2019集。 1. 打开VS2019,创建一个Qt应用程序项目。选择“文件”->“新建”->“项目”,然后选择“Qt应用程序”模板。 2. 在项目设置中,确保正确配置Qt和OpenCV。选择“项目”->“属性”,在属性对话框中,选择“Qt项目设置”并确保已选择正确的Qt版本。然后,在“VC++目录”下的“包含目录”和“目录”中,添加OpenCV的包含和目录。 3. 在项目文件中,包含OpenCV和相关的头文件,以便在代码中使用OpenCV的功能。比如,使用`#include <opencv2/opencv.hpp>`来包含OpenCV的头文件。 4. 开始编写和调试代码。可以使用OpenCV的各种功能来处理图像和视频等任务,并使用Qt的界面设计功能来创建用户界面。 5. 调试和完代码后,可以开始打包应用程序。选择“生”->“生解决方案”,或者按下F7键进行编译。确保没有错误和警告。 6. 打包应用程序时,可以选择发布版本或调试版本。选择“生”->“生解决方案”后,可以在项目目录下的“发布”文件夹中找到生的可执行文件。 7. 如果需要将其分发给其他人使用,还可以通过使用相关的安装程序打包应用程序。选择“生”->“生解决方案”后,可以在项目目录下的“发行”文件夹中找到打包应用程序的相关文件。 以上是使用VS2019进行Qt和OpenCV打包的简要步骤。根据具体的需求和应用场景,可能还需要进行其他配置和功能实现。如果遇到任何问题或困难,可以查阅相关文档和论坛,或者向开发者社区寻求帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值