在德尔福WideString的兼容性问题
-
20-09-2019 - |
题
在一个DLL生成与Delphi 2006中
Foo(aPath: widestring);
begin
_rootPath := aPath;
end;
在与2010年的Delphi创建的可执行
_Foo := GetProcAddress(FooModule,’Foo’);
_Foo(‘123456’);
步进到DLL,aPath = '123'。其实我传递任何字符串被精确地切了一半。
1)为何我的字面被减半? 2)如何解决呢?
解决方案
确认的_Foo参数是在2010年WideString的
其他提示
WideStrings驻留在Windows堆,并且不通过的Delphi内存管理器来管理。所以WideStrings(不像其它长串类型)可以EXE和DLL之间共享而不会出现问题。
我想你错了数据,因为WideString的是有管理的类型和DLL和可执行内存管理是不同的。 如果你能重新编译的DLL使aPath类型为PWideChar
不隶属于 StackOverflow