zoukankan      html  css  js  c++  java
  • C动态库的扩展

    案例背景:一般的企业信息系统都有成熟的框架,可以由C语言编写,也可以由C++编写。软件的框架一般不会发生变化,能自由地集成第三方的产品;

    案例需要:在socket通信中,完成数据加密功能。有n个第三方厂商的加密产品供你选择,如何实现动态库和第三方产品的解耦和?

                      要求能够:1.能够支持多个第三方产品的入围;2.企业的信息系统框架不能轻易发生改变。

    提醒:C++通过面向抽象类编程已经很好地解决了(C++中的多态,C++编译器通过提前布局vptr指针,虚函数表,完成动态的迟邦定)。在C中有应当如何解决?

    解决思路: 

    对于C动态库的扩展,可通过以下5个步骤进行:

    1.在动态库的内部,需要提前定义好一套接口(函数指针类型的定义),搭建dll中的函数调用的模型框架;

    2.在动态库的外部发布你的一套接口协议(发布你的.h文件);

    3.厂商根据你的.h文件实现函数原型(编写子任务);

    4.把厂商实现的函数的入口地址 注入 到你的函数调用模型框架中(main函数中完成);

    5.在框架中 回调 厂商的函数实现。

  • 相关阅读:
    ECharts之柱状图 饼状图 折线图
    Vue自定义指令(directive)
    HDU 1231 最大连续子序列
    POJ 2533 Longest Ordered Subsequence
    HDU 1163 Eddy's digital Roots
    HDU 2317 Nasty Hacks
    HDU 2571 命运
    HDU 4224 Enumeration?
    HDU 1257 最少拦截系统
    HDU 2740 Root of the Problem
  • 原文地址:https://www.cnblogs.com/jswu-ustc/p/8412690.html
Copyright © 2011-2022 走看看