VC++에서 DLL을 만들었습니다.
그리고 그것을 델파이에서 DLL안에 있는 함수를 불러들이는건데요.
그냥 단순한 함수입니다.
인수로 전달받은 두개의 문자열을 합쳐서 리턴해주는건데요.
문자열 처리를 어떻게 해야 할지 모르겠습니다.
char *UserFunc(char *Str1, char *Str2)
{
char *Resule = *Str1 + *Str2;
return Result;
}
이렇게 하고 델파이에서는
procedure TForm1.Button2Click(Sender: TObject);
type
TFunc = function(Str1, Str2 : PAnsiChar):PAnsiChar;
Var
hDll: THandle;
Parsing : TFunc;
Str1, Str2 : PAnsiChar;
Result : PAnsiChar;
begin
hDll := LoadLibrary('Test.dll');
if HDll < 32 then Exit;
Parsing := GetProcAddress(hDll, 'UserFunc');
Str1 := 'aaaa';
Str2 := 'bbbb';
Result := Parsing(Dic);
end;
이렇게 하면 원하는 결과가 안나오고 이상한 문자가 나옵니다.
그리고 두번째 질문은
TFunc = function(Str1, Str2 : PAnsiChar):PAnsiChar;
이렇게 하지 않고
TFunc = function(var Str1 : PAnsiChar; var Str2 : PAnsiChar):PAnsiChar;
이렇게 하여
전달된 인수의 값이 바뀌면 DLL함수 안에서 바뀌면 그 값을 그대로 다시 돌려 받고 싶은데
이건 어떻게 처리해야 할지 모르겠습니다.
|