如何写DLL(C++)

原创 2012年10月16日 21:39:50
很久以前,刚入职的时候,什么都不懂,有同事教了下怎么写dll,然后自己开始慢慢接触dll君。感谢当初与我分享该方面知识的hzc同学(貌似是一个周六上午)。
所以也想和大家分享一下。

iuhsihsow个人心得。

做稍微大一点的工程就不能不接触Dll了,将自己写的一些相对独立的,比较基础的,功能需求稳定的模块写成动态库,会减少后期很多工作量。

优点如下:
1.利于修改,无需重新编译整个工程。
2.利于复用,写个算法库什么的,到处用。(话说准备写一个图像方面的算法库的,结果拖着拖着就没有动力了。)
3.减少EXE大小。。。囧。。

缺点如下:
1.dll版本控制,需要在写dll的用点心。
2.增加了额外的工作量,也就是多几行代码,多配置几行。

环境。。VS2008  C ++  windows操作系统
liunx不讨论,平时用得不多,学了之后就忘了。

1.创建工程
新建工程->C++控制台->Dll

2.配置
配置属性->
                常规->输出目录                                 dll的输出目录
                C/C++->附加包含目录                      项目中头文件一般放的地方
                链接器->常规->
                                                                         输出文件                                            dll的输出路径
                                                                         附加库目录                                         第三方库

                                         
                              高级->                                 导入库                                               生成的库的名字如$(ProjectDir)..\..\..\..\lib\$(TargetName).lib
                生成事件->生成后事件->命令行          用于生成成功后copy源文件                 例如copy Base\*.h            $(ProjectDir)\..\..\..\..\include\

3.各种头文件
3.1.引用头文件
为了方便引用,一般定义一个头文件,里面包括了库的导入导出属性,库中需要引用的各个类,第三方库。如
#                ifdef XXXXX_EXPORTS
#                          define  XXXXX _API __declspec( dllexport )
#                else
#                define  XXXXX _API __declspec( dllimport )
#                ifdef        _DEBUG
#                        pragma comment(lib, " XXXXX D.lib")
#                else
#                        pragma comment(lib, " XXXXX .lib")
#                endif
#                endif

#include " XXXXXDefine.h"
#include " XXXXX .h"

XXX为自己的工程名,XXX_EXPORTS为预编译头,可以去属性中设置

3.2数据头
将自己定义的数据放在一个头文件中可以保持一致性,用起来很方便

3.3预编译头
放些工程中引用很多的东西,<windows.h>引用的第三方库,本工程常用的头文件。等等,看各人习惯好坏了。

4.导出类
写好类后,在类前面加个 XXXX_API,这个在前面有定义过。

5.可以使用DEPENDS.EXE检测库。

6.使用自己写的库
引用头文件,dll放在客户程序能够读到得地方,就能用了。。。。
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

如何写DLL(C++)

很久以前,刚入职的时候,什么都不懂,有同事教了下怎么写dll,然后自己开始慢慢接触dll君。感谢当初与我分享该方面知识的hzc同学(貌似是一个周六上午)。 所以也想和大家分享一下。 iuhsi...

如何编写DLL

在编写c++ dll 时经常使用的到extern “c”和.def来导出函数,下面就详细介绍这两种方法: 1.extern “c ” 和 .def的作用 extern “C”是告诉编译器在编译函数...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

C++如何调用C#编写的DLL

由于C#编绎出来的DLL不是计算机所能直接识别的二进制指令码,需要CLS进行再解释,说到这,我想有些朋友应该知道C#项目需要引用C++编写的DLL时,可以直接引用DLLMPORT来实现调用,而反向的话...

怎么写一篇博客?

看别人写博客不过瘾,是不是也想要写写,无从下手?其实没那么难,我来教你编辑菜单很简单~(≧▽≦)/~啦啦啦,会用word就会用编辑菜单。此处不多说,来看下markdown语法标题在文字写书写不同数量的...

如何用VS2013编写DLL

本人也是一个菜鸟一个,最近学习APi也是磕磕绊绊,这是一篇针对新手的入门教程。下面我用的例子来自于冀云所著的《c++黑客编程揭秘与防范》.

程序员:如何写出杀手级简历

这几年,我在Google工作,是一名软件工程师(之前是在微软做一个开发团队的队长),我曾浏览过成百上千的简历,从中挑选出可以进行下一步面试过程的 应聘者。 有些人的简历给我留下了很深的印象,而另一些则...

C++如何导出DLL

1.导出全局函数 2.导出

如何编写makefile(一)

在默认的方式下,也就是我们只输入make命令。那么,     1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。     2、如果找到,它会找文件中的第一个目标文...

欢迎使用CSDN-markdown编辑器

第一次写CSDN博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: test Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上...

如何写好C++

昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。C++是最难的语...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)