不要重复发明轮子:C++重用的5重境界(2)——简单DLL

简介:

 

第二重境界:简单DLL

稍有经验的人都知道,要解决代码重用的问题其实已经有简单的方法了,那就是动态链接库(Windows平台是DLLLinux/UNIXso,下面以DLL为例说明)。

简单的DLL实现如下:将对象、方法的定义放在DLL里面,使用时只需要包含DLL的头文件即可。

这样简单的一个设计,就能够解决代码重用的一个大问题:一份DLL只占一份磁盘空间、一份内存空间

但为什么我没有说解决了另外一个大问题——编译的问题呢?

乍一看好像是解决了编译的问题,例如我修改函数体内的某个执行语句,或者加一个逻辑判断,只需要编译DLL就可以了呀!

如果只修改函数体那当然是没有问题,但关键是世界没有那么完美和简单,我们可以做很多的修改,例如:

1)  修改类定义:例如增加一个成员变量。

2)  修改函数定义:例如增加一个函数参数,修改某个入参类型;

3)  修改函数体:例如增加一个语句,一个调用等。

以上修改除了第三种修改只需要编译DLL外,其它两种修改都需要重新编译整个项目,也就是说,DLL能够解决空间和编译的部分问题,不能解决所有的编译问题。

革命尚未成功,同志还需努力!!

 

========未完待续,后面更精彩===========

 

相关文章
|
5月前
|
C++
C/C++ DLL 简单实现
C/C++ DLL 简单实现
44 0
|
29天前
|
Unix Linux C++
【C/C++ 造轮子】Linux异步计时器:深入探讨和应用 (Linux Asynchronous Timers: An In-depth Exploration and Application)
【C/C++ 造轮子】Linux异步计时器:深入探讨和应用 (Linux Asynchronous Timers: An In-depth Exploration and Application)
58 1
|
2月前
|
C++ 计算机视觉 Python
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
38 0
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
|
6月前
|
IDE 开发工具 C++
[记录][问题]Win32调用C++/WinRT DLL
[记录][问题]Win32调用C++/WinRT DLL
|
3月前
|
缓存
C++11实用技术(五)泛型编程加载dll接口函数
C++11实用技术(五)泛型编程加载dll接口函数
27 0
|
9月前
|
C++ Windows
C++ --- Dll文件的生成与调用(二)之动态库注入技术
C++ --- Dll文件的生成与调用(二)之动态库注入技术
107 0
|
5月前
|
存储 编译器 C++
《C++避坑神器·十五》动态库只有dll文件,没有.lib文件时动态调用dll的中类和成员函数
《C++避坑神器·十五》动态库只有dll文件,没有.lib文件时动态调用dll的中类和成员函数
120 0
|
5月前
|
C++
《C++避坑神器·九》小白也能轻易掌握动态链接库DLL的使用
《C++避坑神器·九》小白也能轻易掌握动态链接库DLL的使用
65 0
|
6月前
|
C++
MFC exe使用C++ dll中的std::string 崩溃
MFC exe使用C++ dll中的std::string 崩溃

热门文章

最新文章