总结一波这998的不得不提的调整代码的心得。

调整代码的背景:现有wps美化代码分散在各个插件里面,导致每次修改一小部分代码,都要全新编译,并且只能跟版本发,所以决定将wps的美化代码整合成一个插件dll,通过接口的方式(纯虚函数),给内核提供方法,这样随时都可以更新dll

学习到的知识点:

1、static  定义的函数是文件作用域,别的地方无法调用

2、全局变量在程序块运行前初始化

3、静态链接是将lib中的指令都被直接包含在最终生成的EXE文件中了,所以静态链接之后就可以直接删除lib

4、动态链接分为加载时动态链接(有lib文件的dll,lib在编译期就连接到应用程序中,之后也可以删除,主要内容是DLL导出的函数的名称和位置,用vs command输入命令dumpbin /all xx.lib 就可以看到)和运行时动态链接(无lib),动态链接的时候会调用一个dllmain函数(可有可无)

5、override,是在基类(直接基类或者间接基类)有虚函数之后,覆盖用的

6、单例的类,它的构造函数最好申明成private

7、可以通过define IN,define OUT,来在函数参数里加上,这样更容易理解函数参数

8、二重指针直接转化的话,直接通过class1** p1 ; class2**p2 = (class2**)p1;通过小括号显示转换

静态链接编译时需要.h 和.lib,运行时都不需要

加载时动态链接,编译时需要 .h / .lib /.dll  运行时只需要dll

运行时动态链接编译和运行需要 .dll

可看

https://blog.csdn.net/ojshilu/article/details/12954957

相关链接:

https://blog.csdn.net/lightlater/article/details/16851181

https://www.cnblogs.com/tracylee/archive/2012/10/15/2723816.html

https://blog.csdn.net/u011391629/article/details/53636436

dll 恐怖的代码调整的更多相关文章

  1. 如何使用g++编译调用dll的c++代码

    本文将有以下4个部分来讲如何使用g++编译调用dll的c++代码. 1.如何调用dll 2.动态链接和静态链接的区别 3.g++的编译参数以及如何编译调用dll的c++代码 4.总结 1.如何调用dl ...

  2. 水晶报表的宽度调整方法(设计器、代码调整、rpt文件属性)

    水晶报表的宽度调整方法(设计器.代码调整.rpt文件属性) Posted on 2010-08-07 23:52 moss_tan_jun 阅读(1725) 评论(0) 编辑 收藏 经过个人反复研究后 ...

  3. 通过注入DLL修改API代码实现钩取(一)

    通过注入DLL修改API代码实现钩取(一) Ox00 大致思路 通过CreateRemoteThread函数开辟新线程,并将DLL注入进去 通过GetProcessAddress函数找到需钩取的API ...

  4. dll注入与代码注入

    学习<逆向工程核心原理>,在x64下dll注入与代码注入. dll注入主要用到CreateRemoteThread, HANDLE WINAPI CreateRemoteThread( _ ...

  5. Android动态Java代码调整window大小

    Android调整window大小 举一个例子,设置当前的APP所需要的屏幕高度为设备高度的一半: Window window = getActivity().getWindow(); WindowM ...

  6. 《Code Complete》ch.26 代码调整技术

    WHAT? 提高代码运行速度的方法,减少代码的资源占用 WHY? 这里提出的都是“可以尝试的”方法,有的或许在你的环境根本不起作用,有的则能实实在在产生很好的效果 HOW? Logic - 逻辑 在知 ...

  7. 《Code Complete》ch.25 代码调整策略

    WHAT? 本章讨论程序性能调整问题.但是对用户来说,程序员按时交付软件,提供一个清爽的用户界面,避免系统经常死机常常比程序性能更加重要 WHY? 在程序设计这种文化中,编写出能够节省几微秒的代码可以 ...

  8. IOS第八天(3:UITableViewController团购, 点击底部代码调整)

    ****代理者的方法中 // 通知页脚视图调整视图显示状态 [footerView endRefresh]; //发送代理通知的类中 /** 视图控制器刷新完成调用方法 */ - (void)endR ...

  9. ASP封装DLL 直接上代码

    ASP转DLL 基本引用类库 OLE Automation Com+ services Type Library Microsoft Active Server Pages Object Micros ...

随机推荐

  1. 浮动滚动条 slimScroll

    1.引入jquery 2.映入slimScrolljs :<script src="https://cdn.bootcss.com/jQuery-slimScroll/1.3.8/jq ...

  2. Centos下软件包管理

    目录 一.安装软件包的三种方法 二.rpm包介绍 三.rpm工具用法 四.yum工具用法 五.yum搭建本地仓库 六.yum更换国内源 七.yum下载rpm包 八.源码包安装 九.扩展 一.安装软件包 ...

  3. 深入path类

    Path类放在System.IO命名空间里.Path是一个只包含有静态方法的实例类,所以它不需要在使用之前实例化.它有各种方法用于处理文件的扩展名.文件名.根路径,以及和更多和路径相关的方面.下面就是 ...

  4. mpvue 转小程序实践总结

    介绍 Mpvue 是一个使用 Vue.js 开发小程序的前端框架.  基础介绍 框架基于 Vue.js 核心,修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序 ...

  5. «面向对象程序设计(java)»第三周学习总结 周强 201771010141

    实验目的与要求 (1)进一步掌握Eclipse集成开发环境下java程序开发基本步骤: (2)熟悉PTA平台线上测试环境: (3)掌握Java语言构造基本程序语法知识(ch1-ch3): (4)利用已 ...

  6. 自动化测试-11.selenium的下拉框处理类Select

    前言 最近由于工作原因,更新慢了一点,今天终于抽出一点时间给大家继续更新selenium系列,学习的脚本不能停止,希望小伙伴能多多支持. 本篇以百度设置下拉选项框为案例,详细介绍select下拉框相关 ...

  7. day04元组

    元组 1.元祖书写规范 users=[11,22,33,"老男孩"]#列表(可变) users=(11,22,33,"老纳海")#元祖(不可变) 1.公共方法( ...

  8. UltraISO 9.7.1.3519注册码

    王涛 7C81-1689-4046-626F redcaps 82C6-3DEF-AB07-0EC0

  9. jQeury 批量删除

    /*批量删除*/ function datadel(){ var ids = new Array(); $("input[name='batch']:checked").each( ...

  10. Linux配置snmp

    机器环境 [root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) [root@linux- ...