现需将C++函数封装成动态链接库dll,网上看了好多博客教程,说的都不够全面,现提供一个很有用的视频,亲测有效,启发很大,附上链接:

视频网址
下面自己根据视频记录下制作动态链接库dll过程,防止忘记也给大家提供参考,静态链接库用的比较少,暂不记录。
**1.**vs2013-新建项目-win32控制台应用程序(自定义命名,示例程序命名structdllTest)-空项目,如图1,点击完成

**2.**解决方案右击-添加-新建项目-win32控制台应用程序(自定义命名)-选dll和导出符号,如图2所示,

**3.**按照1.2操作,已建成两个项目,如图3所示,其中structdll自动生成了一些示例,

打开structdll.h,编写自己的变量和函数声明,本例中声明如图4所示,

接下来在相应的.cpp中初始化变量,及定义函数,如图5所示,

.h和.cpp编写完成后,右键structdll项目-生成,生成dll,然后在structdllTest工程文件夹下的debug下就出现了structdll.dll和structdll.lib文件,dll生成成功!如图6所示,

**4.**dll制作成功后开始进行验证,即在1中建立的structdllTest项目中进行
右键structdllTest项目中源文件文件夹-添加-新建项-.cpp文件(本例命名为dllTest),如图7所示

**5.**右键解决方案-属性-项目依赖项,进行项目依赖项设置,如图8所示,

在.cpp中输入如下代码,进行动态链接库dll的验证,代码及结果如图9所示

注意:
(1)结构体初始化问题,要在.cpp中使用{}对结构体进行初始化,试了其他的初始化方式,都出现错误,不知道是不是自己试的有问题,大家如果有更好的方法欢迎推荐;
(2)函数声明中有参数项是默认常数项,要么在声明中写出常数项,要么在定义时写出,只能初始化一次,如VOLMEAMAINDLL1_API Mat thinImage(const cv::Mat & src, const int maxIterations=-1);
其中,maxIterations的值若在声明中给出,定义时无需再赋一次值,否则生成dll过程中会出错。
(3)使用指针时,记得初始化,动态指针要防止越界,用完后注意释放!


如需将C++制作的dll供C,C#调用,请参考本人的另一篇博客:
参考链接

C++动态链接库dll及静态链接库lib制作及使用教程相关推荐

  1. 动态链接库dll,静态链接库lib, 导入库lib 转

    动态链接库dll,静态链接库lib, 导入库lib 在用VS编译工程的时候,我们会选择动态链接库dll,静态链接库lib(static library),可是为什么在编译动态链接库的时候也可以指定输出 ...

  2. MFC模块的动态链接库DLL以及静态链接库LIB编译后的调用

    静态链接库LIB和动态链接库DLL的区别,创建和示例   1.什么是静态连接库,什么是动态链接库   静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都 ...

  3. 动态链接库dll,静态链接库lib, 导入库lib

    目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称"静态库"),另一种为动态连接库(DLL,以下简称"动态库")的导入库(Imp ...

  4. 动态链接库DLL与静态链接库LIB

    1)DLL 作用: 1.有助于促进代码重用和内存的效率使用 2.让程序模块化,有利于程序的维护 2.)DLL两种链接方法 1.隐式链接 把.dll和.lib文件导入到项目路径中去 #include&q ...

  5. 静态链接库(Lib) 与 动态链接库(DLL)

    静态链接库(Lib) 与 动态链接库(DLL) 一.VS中添加LIb库及头文件(外部依赖项)的步骤: 1.添加工程的头文件目录:工程-属性-配置属性-c/c+±–常规-附加包含目录:加上头文件存放目录 ...

  6. 静态链接库(Lib)和动态链接库(DLL)

    序言:本文主要讲解静态链接库和动态链接库的区别,以及怎么样编译和引用两种库,怎么样从DLL中导出函数和导出C++类. 一.静态链接库和动态链接库 1.静态链接库(.LIB):函数和数据被编译进一个二进 ...

  7. lib库反编译C语言,C语言静态链接库(lib)与动态链接库(dll)

    今天看到了之前的笔记,看到之前写的笔记,感觉自己都不认得了~~一.静态链接库(lib) 首先创建    "在VC6中创建项目:Win32 Static Library" 在项目中创 ...

  8. Python3源码编译和使用静态链接库lib动态链接库dll详细介绍

    说明: 本文主要介绍: 1.python3源码的下载和编译内核工程(pythoncore) 2.编译的lib和dll使用例子. 若需要编译源码PCBuild下其他python工程,类似参考内核工程(p ...

  9. 静态链接库(.lib)和动态链接库(.dll)的使用

    静态链接库(.lib)和动态链接库(.dll)的使用 文章目录 静态链接库(.lib)和动态链接库(.dll)的使用 一.静态链接库 1. 静态链接库概述 2. 创建静态链接库 3. 调用静态链接库 ...

最新文章

  1. python 字符串部分总结
  2. 数字取整或保留小数四舍五入的正确写法
  3. 深度学习核心技术精讲100篇(四十四)-深度召回在招聘推荐中的挑战和实践
  4. 入侵和反击 动态规划
  5. DHCP+TFTP+VSFTP+pxelinux+kickstart实现RedHat的自动安装
  6. node.js安装部署测试
  7. 宏定义函数container_of的解释
  8. 星地融合→→→6G移动通信关键技术的未来
  9. getwayworker timer_Java定时器之Timer学习二
  10. 爱奇艺深夜就“倒奶视频”致歉:《青你3》成团夜停止录制和直播......
  11. 元宇宙会成为IPv6的拐点吗?
  12. excel文件损坏修复绝招_修复数据工具大盘点,让你快速掌握电脑数据恢复的秘密武器...
  13. Ubuntu16.04编译Android源码系列一——7.1.2和4.4及踩坑
  14. 一种高效查找树-radix的实现
  15. 【面试记录】1.给定一个由正数,负数和0组成的整数数组,将所有为0的元素,挪到数组末尾。2.给定任意一个自然数,获取它重新排列后,下一个比它大的自然数。(Leetcode 031 下一个排列)
  16. Python爬虫福利:带你爬取妹子图上的美女图片,学习改变生活
  17. 新手学习 python 的好工具:PyScripter
  18. Java 3D 开发
  19. veracrypt取消加密卷_VeraCrypt如何创建文件型加密卷?保护文件资料安全
  20. [教程]BaiduPCS-Go

热门文章

  1. [DevOps] 认识一下
  2. UnixLinux大学教程 读书笔记【1-3章】
  3. 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。...
  4. SCALA当的trait
  5. 微软SCRUM 1.0流程模板在中文版TFS2010上无法创建项目的解决办法(续)
  6. Enterprise Architect 7 入门教程 1
  7. [导入]C#中实现Socket端口复用
  8. OpenCV+python:Canny边缘检测算法
  9. pat 多项式A/B
  10. kafka 批量 回写mysql_kafka往mysql写数据操作笔记