替换应用程序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的过程,完整的实现。这是我在亲自一步步操作整理的过程,希望对需要的朋友有帮助。