关闭

如何写DLL(C++)

标签: dllc++api算法include工作
2910人阅读 评论(2) 收藏 举报
分类:
很久以前,刚入职的时候,什么都不懂,有同事教了下怎么写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放在客户程序能够读到得地方,就能用了。。。。
4
2
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

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

利用C++制作dll并调用dll

Abstract:本文讲解如何利用c++制作dll并调用dll,用一个简单的加法函数来作为演示,并给出图形界面。1. 打开vs(我用的是vs2010),然后点击文件—>文件—>新建—>项目,选择Win...
  • hlx371240
  • hlx371240
  • 2016-05-26 15:58
  • 9825

C++写dll文件用C#调用

创建项目: 项目为win32项目,注意不是控制台,然后在设置处选上DLL并勾上“导出项目”,见下图 开始写c++: 把和项目同名的.h文件和.cpp文件清空,添加如下代码://在头文件中...
  • qq_22033759
  • qq_22033759
  • 2015-08-29 23:52
  • 2019

谈谈vc如何写dll(封装性,隐藏头文件,私有成员)

最近项目进行到一定阶段,老板要求把已完成部分分离开并把各模块封装成dll。用vs开发dll当然很简单,是用vs的向导可以很快写一个dll.但是我遇到了一些问题:刚开始只需要把各个模块的头文件和cpp加...
  • caiqi1123
  • caiqi1123
  • 2012-06-14 19:19
  • 1694

谈谈vc如何写dll(封装性,隐藏头文件,私有成员) .

(转)谈谈vc如何写dll(封装性,隐藏头文件,私有成员) . 最近项目进行到一定阶段,老板要求把已完成部分分离开并把各模块封装成dll。用vs开发dll当然很简单,是用vs的向导可以很快写...
  • jfkidear
  • jfkidear
  • 2012-02-11 15:34
  • 638

如何写DLL文件及调用DLL文件

原文地址:http://panxianjin.dream.blog.163.com/blog/static/12635274620099293578769/ 1.写DLL 打开...
  • pyjfoot
  • pyjfoot
  • 2012-12-08 19:49
  • 846

Linux系统如何写C/C++程序

前言,本文介绍的利用linux系统编写C/C++语言程序是在CentOS 环境下实现的,在编程之前,您得先安装Linux系统或者Linux虚拟机,一切准备好之后我们就可以开始编程了。(1).开启电脑或...
  • no_sying_nothing
  • no_sying_nothing
  • 2016-05-29 22:49
  • 200

C++如何写adaptable仿函数

关于仿函数很多博客上都有,形式很简单,用途也很多。 一句话总结:重载了()运算符的类可以称之为仿函数functor 现在写一个“比较”class MyLess{ public: bool ...
  • PROGRAM_anywhere
  • PROGRAM_anywhere
  • 2017-12-20 19:47
  • 33

C++中的头文件和源文件:如何写头文件

一、C++编译模式      通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件...
  • GUI1259802368
  • GUI1259802368
  • 2017-04-01 20:32
  • 514

C++中的头文件和源文件:如何写头文件

转自转自:博客园http://www.cnblogs.com/lidabo/archive/2012/04/17/2454568.html 一、C++编译模式 通常,在一个C++程序中,只...
  • u012510648
  • u012510648
  • 2016-05-26 10:15
  • 194
    个人资料
    • 访问:185097次
    • 积分:3437
    • 等级:
    • 排名:第11273名
    • 原创:103篇
    • 转载:50篇
    • 译文:14篇
    • 评论:37条
    博客专栏
    文章分类
    站长统计