首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 函數轉換為 Delphi 函數的關鍵要點

     編輯:程式設計綜合問答

C++ 函數轉 Delphi 宣告的正確寫法

將 C/C++ 的 DLL 函數匯入 Delphi 時,最常見的問題在於呼叫慣例與名稱修飾。針對 Int xs(char *Id, char *SendData, char *Result) 這類函數,正確的 Delphi 匯入宣告應為:

function xs(Id: PAnsiChar; SendData: PAnsiChar; Result: PAnsiChar): Integer; stdcall; external 'DllName.dll';

兩大關鍵注意事項

  1. C++ 側需加 extern "C":若 DLL 為 C++ 編譯,編譯器會對函數名進行 Name Mangling,導致 Delphi 找不到符號。在 C++ 標頭檔與實作檔的函數宣告前加上 extern "C" 即可抑制修飾,讓匯出名保持原樣。
  2. Delphi 側的 external 後須為字串常數:external 'DllName.dll' 中的檔名必須是編譯期可解析的常量字串,不可使用變數。

參數型別對照表

C/C++ 型別Delphi 對應型別備註
char *PAnsiCharAnsi 字串指標,D2009 後建議用 PAnsiChar
intInteger32 位有號整數
stdcallstdcall呼叫慣例必須一致

常見錯誤排查

  • 若報「External exception C0000005」:檢查呼叫慣例(stdcall/cdecl)是否一致,參數順序、大小是否對齊。
  • 若報「Can't load DLL」:確認 DLL 路徑、位元數(32/64 bit)與 Delphi 專案一致。
  • 中文亂碼:確保雙方字元集一致,或在 Delphi 端用 UTF8ToAnsi / AnsiToUTF8 轉碼。

掌握這兩點,C/C++ DLL 互操作 Delphi 即可事半功倍。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved