我有一個 Delphi Berlin Windows 服務,它將呼叫一個 Delphi 11 DLL。這個 Delphi 11 DLL 有 REST API 呼叫。我使用以下代碼從我的服務中呼叫 DLL 方法:
function RESTAPICall(sURL, sDomain, sID, sJson: String;
var slLog: TStringList) : Boolean; stdcall; External Restcall.dll' name 'RESTAPICall' delayed;
OnTimer()然后我在 Windows 服務中的事件中呼叫這個 DLL 方法。但它在運行時會引發訪問沖突錯誤:
模塊“Restcall.dll”中地址 633381F4 的訪問沖突。讀取地址 FFFFFFFC。
有時我也會收到此 AV 錯誤:
模塊“borlndmm.dll”中地址 21285195 的訪問沖突。寫入地址 6347C370。
請注意,此錯誤僅在服務呼叫期間發生,如果我從 EXE 呼叫 DLL,它可以正常作業。
uj5u.com熱心網友回復:
簡而言之:您不能直接在應用程式和 DLL 之間傳遞字串或動態陣列。您需要執行以下操作之一:
- 通過將應用程式和 DLL 作為第一個單元包含在
uses. - 設計你的 DLL 函式來接受
PChar,而不是String。
注意:我在很多專案中都使用了FastMM,但我不知道它是否適用于 Delphi Alexandria。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/530425.html
標籤:德尔福服务delphi-10.1-柏林delphi-11-亚历山大
上一篇:未創建CosmosDB容器
下一篇:手柄滑鼠雙擊定制
