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
부탁드려용..
고로 똑같은것이 델파이에는 없습니다.
제가 보기엔 인자를 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로 바꾸시길.
구현은 직접 해보시길 ^^;