在使用Delphi 2006进行的dll构建中
Foo(aPath: widestring);
begin
_rootPath := aPath;
end;
在使用Delphi 2010构建的可执行文件中
_Foo := GetProcAddress(FooModule,’Foo’);
_Foo(‘123456’);
进入dll,aPath ='123'。事实上,我传递的任何字符串都会被切成两半。
1。)为什么我的文字减半? 2.)我该如何解决?
答案 0 :(得分:5)
确保_Foo参数在2010年是一个宽字符串
答案 1 :(得分:2)
WideStrings驻留在Windows堆中,不受Delphi内存管理器管理。所以WideStrings(与其他长字符串类型不同)可以在exe和dll之间共享而没有问题。
答案 2 :(得分:0)
我认为你得到错误的数据,因为WideString是一个托管类型,而dll和可执行文件的内存管理器是不同的。 如果你可以重新编译dll使aPath类型为PWideChar