替換應用程序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的過程,完整的實現。這是我在親自一步步操作整理的過程,希望對需要的朋友有幫助。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM