Q&A

  • VC로 작성한 DLL에서 리턴한 스트링을 델파이에서 받고 싶어요.
VC로 DLL을 만들었습니다.

extern "C" __declspec(dllexport) CString Optimize(LPCSTR Expression)

선언은 이렇게 했구요..


델파이에서는 이런식으로 받았습니다.

TOptFunc =  function(S:string): string; cdecl;

델파이에서 VC DLL의 위 함수를 호출하면 문자열이 정상적으로

리턴되긴 하는데요, FreeLibrary() 후 종료시 애플리케이션이
에러가 발생합니다.

CString 을 string으로 받는 데에 문제가 있는것 같은데요..^.^;
(델파이 초보라..)

제대로 문자열을 C에서 델파이로 옮기려면 어떻게 해야 하는지
모르겠습니다..

아시는분 있으면 답변 부탁드려요.

꼭 CString이 아니어도..
델파이의 스트링 형과 호환되는 타입을 알고싶습니다.

VC의 문자열 타입인 CString, LPSTR, LPCSTR 등을..
어떻게 델파이로 옮길수 있을까요..

문자열을 옮겨야해요..T.T

부탁드려용..
1  COMMENTS
  • Profile
    이광수 2002.11.05 10:00
    CString은 MFC에 존재하는 고유의 스트링 타입입니다.
    고로 똑같은것이 델파이에는 없습니다.

    제가 보기엔 인자를 2개로 만드셔야 할 것 같군요.

    extern "C" __declspec(dllexport) void Optimize(LPCSTR Expression, LPSTR Ret)

    델파이에서 call시에는 string을 SetLength로 스트링 버퍼를 적당히
    잡고 쓰시면 됩니다.

    return되면 SetLength( str, StrLen(PChar(str)) );
    로 크기를 맞춰주시길.

    즉 델파이에서는 LPCSTR = const pchar
    LPSTR = pchar로 보시면 됩니다.

    call시에 반드시 pchar로 바꾸시길.

    구현은 직접 해보시길 ^^;