在一个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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top