• dll 恐怖的代码调整


    总结一波这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 

  • 相关阅读:
    服务器基础知识
    web服务器与应用服务器
    QGraphics
    对话框Dialog
    信号和槽
    nginx 杂记
    go语言nsq源码解读八 http.go、http_server.go
    go语言nsq源码解读七 lookup_protocol_v1.go
    go语言nsq源码解读六 tcp.go、tcp_server.go
    go语言nsq源码解读五 nsqlookupd源码registration_db.go
  • 原文地址:https://www.cnblogs.com/likemao/p/9438438.html
Copyright © 2020-2023  润新知