首先,先推荐两个具有高质量的博客,先把这两个案例做成功了,我这边的案例也差不多了。
- 使用类进行打包dll:http://blog.youkuaiyun.com/slm1130/article/details/53489221
- 使用函数进行打包dll:http://blog.youkuaiyun.com/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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
3.生成解决方案,现在肯定是很多错误;
4.将dll和lib文件拷贝到debug文件夹下,与exe文件是同一个文件夹,另外,之前dll引用的文件也都复制到现在这个项目的与cpp同一文件夹下;
5.右键项目名字选择属性,->配置属性->VC++目录->常规-库目录,选择你放置了lib的debug文件夹。
->配置属性->链接器-输入-附加依赖项-编辑加入lib的文件名(全名包含后缀)-确认
6.重新生成,运行即可
然后就成功了,博主是一般看到网上没有一些好的资料的时候,就会写一些东西到csdn上来,一般都是挺不错的资料,我觉得。觉得同样感觉到不错的朋友可以点一波关注~
首先,先推荐两个具有高质量的博客,先把这两个案例做成功了,我这边的案例也差不多了。
- 使用类进行打包dll:http://blog.youkuaiyun.com/slm1130/article/details/53489221
- 使用函数进行打包dll:http://blog.youkuaiyun.com/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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
3.生成解决方案,现在肯定是很多错误;
4.将dll和lib文件拷贝到debug文件夹下,与exe文件是同一个文件夹,另外,之前dll引用的文件也都复制到现在这个项目的与cpp同一文件夹下;
5.右键项目名字选择属性,->配置属性->VC++目录->常规-库目录,选择你放置了lib的debug文件夹。
->配置属性->链接器-输入-附加依赖项-编辑加入lib的文件名(全名包含后缀)-确认
6.重新生成,运行即可
然后就成功了,博主是一般看到网上没有一些好的资料的时候,就会写一些东西到csdn上来,一般都是挺不错的资料,我觉得。觉得同样感觉到不错的朋友可以点一波关注~