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

时间:2010-01-11 18:25:02

标签: delphi delphi-2010 delphi-2006 widestring

在使用Delphi 2006进行的dll构建中

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

在使用Delphi 2010构建的可执行文件中

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

进入dll,aPath ='123'。事实上,我传递的任何字符串都会被切成两半。

1。)为什么我的文字减半? 2.)我该如何解决?

3 个答案:

答案 0 :(得分:5)

确保_Foo参数在2010年是一个宽字符串

答案 1 :(得分:2)

WideStrings驻留在Windows堆中,不受Delphi内存管理器管理。所以WideStrings(与其他长字符串类型不同)可以在exe和dll之间共享而没有问题。

答案 2 :(得分:0)

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