• 替换应用程序DLL动态库的详细方法步骤 (gts.dll为例)


    在C++ builder编译器IDE软件下

    1、View -Project Manageer --找到需要替换的x.dll(gts.dll)对应的x.lib(gts.lib),然后Remove
    2、Project -Remove from project --查找是否dll是否任然存在,如果存在,则Remove
    3、1/2两个步骤,任选其一。完成以后,编译程序可以看到类似下面的error
      [Linker Error]Unresolved external "GT_AxisOff" referenced form ...file..path...
        GT_AxisOff 是Remove掉的dll(gts.dll)里面的函数
    4、删除 工程文件目录下x.dll 、x.lib、x.h x.h~   
      完成之后编译程序可以看到类似下面的error:E2209
        [C++ Error]motionCtrl_GTS.h(6):E2209 Unable to open include file 'x.h'(gts.h)   ::::::motionCtrl_GTS.h是使用到gts.h的文件
      细心的你会发现 编译出错时,项目文件DEBUGS下并不会有exe文件
    5、删除 工程文件DEBUGS目录下 x.dll  、x.lib (gts.dll、gts.lib)
      完成之后编译程序可以看到和第4步一样的ErrorE2209
    6、添加 新的x.dll、 x.lib  x.h 到 工程目录下
      完成之后编译程序可以看到类似下面的errorE2268:
        [c++ Error]motionCtrl_GTS.cpp(48):E2268 Call to Undefined function 'GT_SetAxisAsLaser'
          报错说明:这是因为新的gts.dll 中没有 旧版本gts.dll中函数‘GT_SetAxisAsLaser’接口,所以原本程序中使用这个函数就会报错 (这是替换dll后,进一步的更新工作)
      用心对比 第4步  和   第6步 的操作过程和编译结果
    7、添加 新的x.dll 、x.lib 到 工程文件DEBUGS目录下
      完成之后编译程序可以看到和第6步一样的errorE2268:
      这个时候,大家注意,第 1步 或者 第2 步我们Remove 后编译报错[Linker Error] ,当我们完成 第6步 和第 7步,还没有把 (..待续..)add to project  ,也并没有报错[Linker Error]
        其实并不是不存在错误[Linker Error],而是编译流程的原因,当编译出第6步的错误时,编译器就没有深一步的编译
        假如,新的gts.dll 完全涵盖了 旧的 gts.dll ,这个时候,我们编译程序 ,便不会产生 第6步的错误, 而是产生 第1步或者 第2步完成之后编译的错误 [Linker Error]
    8、Project -Add to Project  --弹出的对话框选择文件类型 ang file(*.*) 在工程文件下找到 gts.lib 点击打开
      完成之后,编译程序,会看到编译成功,没有错误
      我们打开 工程文件DEBUGS也可以看到 生成了项目程序的exe文件 ,双击运行 OK,没有任何问题

    替换DLL的过程,完整的实现。这是我在亲自一步步操作整理的过程,希望对需要的朋友有帮助。

     

  • 相关阅读:
    Java的特性和优势
    MyBatis
    SpringBoot简介
    Liunx
    MySql简介与入门
    Volatile
    MySQL简介
    Redis
    Spring IoC
    什么是springboot
  • 原文地址:https://www.cnblogs.com/azbane/p/7493109.html
Copyright © 2020-2023  润新知