문제

Delphi 2006과 함께 DLL 빌드에서

Foo(aPath: widestring);
begin
  _rootPath := aPath;
end;

Delphi 2010으로 구축 된 실행 파일에서

_Foo := GetProcAddress(FooModule,’Foo’);
_Foo(‘123456’);

DLL에 들어서, Apath = '123'. 실제로 내가 전달하는 모든 끈은 정확히 반으로 자릅니다.

1.) 왜 내 문자가 절반으로 줄어드는가? 2.) 어떻게 수정합니까?

도움이 되었습니까?

해결책

_Foo 매개 변수가 2010 년에 널리 퍼져 있는지 확인하십시오.

다른 팁

Widestrings는 Windows 힙에 존재하며 Delphi Memory Manager가 관리하지 않습니다. 따라서 다른 긴 문자열 유형과 달리 Widestrings는 문제없이 EXE와 DLL간에 공유 할 수 있습니다.

widestring은 관리 유형이고 DLL의 메모리 관리자이고 실행 파일이 다르기 때문에 잘못된 데이터를 얻는다고 가정합니다. DLL을 다시 컴파일 할 수 있다면 Apath 유형을 pwidechar로 만듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top