程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 如何實現C++Builder調用DLL

如何實現C++Builder調用DLL

編輯:C++入門知識

嘗試著進行 C++Builder生成的 DLL 之前,回顧一下如何調用一個 C++Builder 創建的 DLL 可能會有給您的操作帶來很大幫助,你可以在運行時載入 DLL,而不是使用引入庫。

調用 DLL 函數,首先通過選擇菜單 Project | Add to Project 的方法,把引入庫添加到你的 C++Builder 工程裡;其次,在需要調用 DLL 函數的 C++ 源文件裡為 DLL 頭文件插入 #include 聲明;最後添加調用 DLL 函數的代碼。程序清單 A 和 B 包含了做為測試 DLL 的源代碼。注意,測試代碼實現了兩種不同的調用習慣__stdcall 和 __cdecl)。

這樣幫是有充分的理由的。當你設法調用一個用 Visual C++ 編譯的 DLL 時,大多讓你頭疼的事情都是由於處理不同的調用習慣產生的。還要注意一點,有一個函數,它沒有明確列出使用的調用習慣。這個未知函數作為不列出調用習慣的 DLL 函數的標識。

  1. #ifdef __cplusplus  
  2. extern "C" {  
  3. #endif  
  4. #ifdef _BUILD_DLL_  
  5. #define FUNCTION __declspec(dllexport)  
  6. #else  
  7. #define FUNCTION __declspec(dllimport)  
  8. #endif  
  9. FUNCTION int __stdcall StdCallFunction(int Value);  
  10. FUNCTION int __cdecl CdeclFunction (int Value);  
  11. FUNCTION int UnknownFunction(int Value);  
  12. #ifdef __cplusplus  
  13. }  
  14. #endif  
  15. //------------------------------------------  
  16. //Listing B: DLL.C  
  17. #define _BUILD_DLL_  
  18. #include "dll.h"  
  19. FUNCTION int __stdcall StdCallFunction(int Value)  
  20. {  
  21.  return Value + 1;  
  22. }  
  23. FUNCTION int __cdecl CdeclFunction(int Value)  
  24. {  
  25.  return Value + 2;  
  26. }  
  27. FUNCTION int UnknownFunction(int Value)  
  28. {  
  29.  return Value;  

從清單 A 和 B 創建測試 DLL,打開 C++Builder,選擇菜單 File | New 調出 Object Repository。選擇 DLL 圖標,單擊 OK 按鈕。C++Builder 會創建一個新的工程,帶有一個源文件。這個文件包含一個 DLL 的入口函數和一些 include 聲明。現在選擇 File | New Unit。

保存新的單元為 DLL.CPP。從清單 A 拷貝粘貼文本插入頭文件 DLL.H。從清單 B 拷保存工程為 BCBDLL.BPR。接下來,編譯工程,看看生成的文件。C++Builder 生成了一個 DLL 和以 .LIB 為擴展名的引入庫。

這時,你有了在 C++Builder 裡調用 DLL 所需的三個元素:DLL 本身,帶有函數原型的頭文件,用來連接的引入庫。現在我們需要一個用來調用 DLL 函數的 C++Builder 工程。在 C++Builder 裡創建一個新的工程,保存到你的硬盤上。

  • C++語言入門介紹
  • C++中的C++函數說明
  • 如何學好C++呢?
  • 如何在Linux下進行C++開發
  • 選擇C++編輯器的幾大要素

從 DLL 工程目錄裡拷貝 DLL、引入庫、DLL.H 頭文件到新的目錄。其次,在主單元裡添加 #include 聲明,包含 DLL.H。最後,添加調用 DLL 函數的代碼。清單 C 列出了調用由清單 A 和 B 生成的 DLL 中每個函數的代碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved