2014-03-04 1 views
3

My 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 코드를 허용하도록 인터페이스를 다시 설계해야합니다.

관련 문제