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