您的位置:首页 > 运维架构

vs2013 打包并调用dll(opencv,多函数复杂情况下)

2017-04-02 13:29 267 查看
首先,先推荐两个具有高质量的博客,先把这两个案例做成功了,我这边的案例也差不多了。

使用类进行打包dll:http://blog.csdn.net/slm1130/article/details/53489221

使用函数进行打包dll:http://blog.csdn.net/hit2015spring/article/details/52624985

博主认为使用函数进行打包的方法更加简单。为避免前两个博主的文章消失,我再说一些我的这边的过程。主要说使用函数打包的方法,响应题目。

使用函数打包:

1. 这个项目的第一件事情:创建无导出符号的dll空项目;

2. 然后就是将之前写的函数代码复制进去,再去配置opencv的环境,错误都解决好了如下图。



复制代码过程:dllmain.cpp不用管,将之前写的函数代码复制到新建的项目cpp中,图片中Imgset.cpp是我的项目中新加的cpp文件,这就是复杂的地方,但是仅仅引用现有cpp文件就可以了,没有影响。

注意:

如果之前的函数有要调用的相对路径的文件的话,在这里不用复制到这个项目的相对路径下,而是复制到调用这个dll的项目下去使用;

记得在需要调用的函数那里加上__declspec(dllexport) void Bleeding()中的__declspec(dllexport) 。

3.然后生成,即可得到dll和lib文件;

调用dll:

1. 新建项目C++/Win32控制台应用程序,命名。选择没有预编译头。

2. 调用dll内的类函数。

// test_Bleed.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;

#pragma comment(lib, "Bleed.lib")        //调用dll文件时候必须用到的
void Bleeding();          //对刚才写好的处理函数进行声明
//主函数
int main()
{
Bleeding();
return 0;
}


3.生成解决方案,现在肯定是很多错误;

4.将dll和lib文件拷贝到debug文件夹下,与exe文件是同一个文件夹,另外,之前dll引用的文件也都复制到现在这个项目的与cpp同一文件夹下;

5.右键项目名字选择属性,->配置属性->VC++目录->常规-库目录,选择你放置了lib的debug文件夹。

->配置属性->链接器-输入-附加依赖项-编辑加入lib的文件名(全名包含后缀)-确认

6.重新生成,运行即可

然后就成功了,博主是一般看到网上没有一些好的资料的时候,就会写一些东西到csdn上来,一般都是挺不错的资料,我觉得。觉得同样感觉到不错的朋友可以点一波关注~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息