2014-03-04 104 views
3

我的Delphi應用程序正在從一個C++ DLL調用一個函數,它應該像這樣返回字符串。如何使用字符串參數在Delphi中調用C++ DLL?

C++ DLL

__declspec(dllexport) void sample(char* str1, char* str2) 
{ 
    strcpy(str1, "123"); 
    strcpy(str2, "abc"); 
} 

德爾福

procedure sample(Str1, Str2: pchar); cdecl; external 'cpp.dll'; 
var 
    buf1 : Pchar; 
    buf2 : Pchar; 
begin 
    sample(@buf1, @buf2); 
    //display buf1 and buf2 
    //ShowMessage(buf1); //it display random ascii characters 
end; 

什麼是做這種正確的方法是什麼?

+0

這個問題不是很清楚嗎? –

回答

5

您需要爲要寫入的C++代碼分配內存。例如:

var 
    buf1, buf2: array [0..255] of Char; 
begin 
    sample(buf1, buf2); 
end; 

您還應該重新設計接口以接受緩衝區的長度,並允許DLL代碼避免緩衝區溢出。

相關問題