Q&A

  • [질문] XP까지 잘 동작하는데, windows 7 에서 에러가 나는 소스입니다.
문자열을 주고받는 DLL 입니다.
Delphi 7로 만들었구요
VB6에서 DLL을 붙여서 잘 쓰고 있었고요, XP까지 잘 동작하고요,
windows7 에서는 프로그램이 죽어버리네요.

소스를 간단히 설명하자면요,
VB에서 string 문자열을 넘기면 DLL(델파이로 만든)에서 PChar로 받고
PChar 형 리턴값을 넘기면 VB6에서 string 으로 받습니다.

* 관리자권한...과 같은 문제는 아닌듯합니다.
아래 함수를 integer 를 주고받게 바꾸면 에러없이 잘 동작합니다.
PChar <-> string 형이 문제인 것 같은데... 영... 모르겠습니다.
Delphi 7 이라서 문제일까요? Windows7에 Delphi 2010 설치해서 컴파일하면 해결될 문제일까요?

-----------------------------------------------------------------
DLL 내부 함수 소스
-----------------------------------------------------------------
function TestPChar(const str: PChar): PChar; stdCall;
var
  Size: Cardinal;
  ii: PChar;
begin
  ii := 'start0123456789' + #0;
  Size := Length(ii) + 1;
  GetMem(Result, Size);
  StrPCopy(Result, ii);
  ............
end;

-----------------------------------------------------------------
VB6 어플리케이션 소스
-----------------------------------------------------------------
Private Sub Command8_Click()
    Dim iResult As String

    iResult = TestPChar("test")
    Text1.SelText = iResult
End Sub
0  COMMENTS