안녕하세요. 델초보 입니다.
다름이 아니라 visual c++ 에서 DLL 파일을 만들고 그걸 Delphi 에서 사용할려고 합니다.
visual c++ 에서 만든 함수는...
char* CompInit(void) 형태로 리턴값으로 char 형태의 포인터를 날립니다.
{
char temp[10];
return( temp );
}
물론 이것은 DLL 파일로 만들어져 있으며 DLL 호출까지는 문제 없이 됩니다.
다만 리턴값을 어떻게 해야 할지 몰라서.. ^^;;
질문1. Pointer 라는 형태의 변수를 만들어서 넘어온 주소값을 받으면 되는건지
질문2. 넘어온 주소값의 내용물(?) 들은 어떻게 하면 스트링 형태로 변환이 가능한지..
여기서 Pointer 에 대한 내용을 찾아보았는데 몇개의 예제를 사용하면 잘 되는데 실제로 제가 쓰는곳에 대입해서 쓸려면 에러가 나서요.
고수님들의 답변을 기다리겠습니다. 오늘도 즐거운 하루 되세요.
temp[10]은 펑션이 실행될때 스택에 임시로 생겼다가 펑션에서 리턴하면
없어져 버립니다.
부르는 펑션에서 메모리를 잡고 넘기던지 아니면 펑션내에서 malloc을 하던지
다른 방법으로 하셔야 합니다.
[del]
function compinit(pchar a):pchar;stdcall;
function compinit; external 'x.dll' name 'compinit' ;
function a;
var
s : string;
p : pchar;
begin
setsize(s,10);
p := compinit(@s[1]);
end;
[c++]
char *compinit(char *a)
{
do something;
return anything;
}
요런식으로 써야 합니다.