델파이의 광범위한 호환성 문제
-
20-09-2019 - |
문제
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로 만듭니다.
제휴하지 않습니다 StackOverflow