Q&A

  • visual c++ 에서 만든 DLL 델파이에서 사용할때.. Pointer 형
안녕하세요.  델초보 입니다.

다름이 아니라 visual c++ 에서 DLL 파일을 만들고 그걸 Delphi 에서 사용할려고 합니다.

visual c++ 에서 만든 함수는...

char* CompInit(void)  형태로 리턴값으로 char 형태의 포인터를 날립니다.
{
  char temp[10];
  return( temp );
}

물론 이것은 DLL 파일로 만들어져 있으며 DLL 호출까지는 문제 없이 됩니다.

다만 리턴값을 어떻게 해야 할지 몰라서..  ^^;;

  질문1.  Pointer 라는 형태의 변수를 만들어서 넘어온 주소값을 받으면 되는건지

  질문2. 넘어온 주소값의 내용물(?) 들은 어떻게 하면 스트링 형태로 변환이 가능한지..

  여기서 Pointer 에 대한 내용을 찾아보았는데 몇개의 예제를 사용하면 잘 되는데 실제로 제가 쓰는곳에 대입해서 쓸려면 에러가 나서요.

  고수님들의 답변을 기다리겠습니다.   오늘도 즐거운 하루 되세요.
2  COMMENTS
  • Profile
    사기꾼 2003.08.22 20:09
    c++ 펑션이 잘못되었습니다.

    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;
      }

    요런식으로 써야 합니다.


  • Profile
    이성진 2003.08.21 23:41

    PChar 사용하면 됩니다

    extern "C" __declspec(dllexport) char* Test_charP(char* a);

    이런 함수가 있다면,

    function Test_charP(a : PChar) : PChar;  cdecl; external 'test.dll';

    이렇게 사용하세요