Delphi中的宽字符串兼容性问题

在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内存管理器管理。 因此,WideStrings(不像其他长字符串类型)可以在exe和dll之间共享而不会出现问题。


我想你会得到错误的数据,因为WideString是一个托管类型,而dll和可执行文件的内存管理器是不同的。 如果你可以重新编译dll让aPath类型为PWideChar

链接地址: http://www.djcxy.com/p/61485.html

上一篇: widestring compatibility problem in Delphi

下一篇: Delphi 2006 system.delete for widestrings?