总结一波这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. leetcode python 007

    ##  翻转整数def evert(int0):    if int0<0:        flg=1    else:        flg=0    e=int(str(int0)[flg: ...

  2. 前端开发【第一篇: HTML】

    HTML初识  1.什么是HTML? HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).  2.网页的组成 我们平时 ...

  3. ceph存储集群测试方案

    --测试目的 测试ceph集群的读写性能,根据测试数据了解整个ceph集群的性能情况. --测试环境 1.8节点ceph集群环境,1台虚拟机(cpu 8核,内存8G),8k的块大小,时长2小时 2.8 ...

  4. Arcmap查找孤路

    本文将介绍如何查出孤路——如下图红色框中的路: 方法一:使用拓扑检查 1. 使用merge,将所有道路合并到一个图层.注意,不能先分图层进行拓扑检查,因为本不是孤路的数据可能会被挑出来. 2. 对合并 ...

  5. Java基础之枚举类型

    枚举 为什么需要枚举 在Java开发过程中,有时需要定义一系列有限的数据,如:月份.星期等.<br> java1.5之前,主要通过定义一系列静态常量完成. class Genders{ p ...

  6. 添加mtdparts引起的问题

    今天在给uboot添加分区,大家都知道添加完之后直接在终端里面mtd会报错: SMDK2440 # mtd mtdparts variable not set, see 'help mtdparts' ...

  7. 学习笔记TF043:TF.Learn 机器学习Estimator、DataFrame、监督器Monitors

    线性.逻辑回归.input_fn()建立简单两个特征列数据,用特证列API建立特征列.特征列传入LinearClassifier建立逻辑回归分类器,fit().evaluate()函数,get_var ...

  8. github二次认证接收短信的问题

    这两天登陆github都被提示说我账号的密码已经被归类,提醒我修改密码. 改密码的时候发现GitHub有个二次认证的功能,分别是app和sms短信认证.app这里就不讲了,我们讲一下github的短信 ...

  9. 从npm 角度理解 mvn 的 pom.xml

    从npm 角度理解 mvn 的 pom.xml pom -- project object model. 用于描述项目的配置: 基础说明 依赖 如何构建运行 类似 node.js 的 package. ...

  10. immutable.js使用总结

    1. immutable相当于 JSON.parse 和 JSON.stringify: 2.引入redux中,除了 在最外层 reducer中  import { combineReducers } ...