library Project2;
uses SysUtils, Classes;
{$R *.res}
begin end.
function MyMax(X, Y: Integer): Integer; stdcall;
begin
if X > Y then Result := X else Result := Y;
end;
exports 區宣告導出名稱(區分大小寫):
exports
MyMax; // 導出名稱必須與此處一致,大小寫敏感
begin end.
Project2.dll。function MyMax(X, Y: Integer): Integer; stdcall; external 'MyTestDLL.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(MyMax(30, 50))); // 50
end;
MyMax ≠ mymax。建議統一 PascalCase。library MyDLL;
uses
ShareMem, // 必須是 uses 子句第一個
SysUtils, Classes;
...
// 專案檔 .dpr 同樣需首行 uses ShareMem
否則雙方各自管理記憶體 → Access Violation 或記憶體洩漏。PChar、ShortString、record 等非托管型別。資源管理器右鍵 DLL → Quick View (或用 Dependency Walker、PE Explorer) 查看 Export Table,確認 MyMax 存在。