1

Delphi2006を使用したdllビルド

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

Delphi2010でビルドされた実行可能ファイル

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

dllにステップインすると、aPath='123'になります。実際、私が渡す文字列はすべて正確に半分にカットされます。

1.)文字通り半分になるのはなぜですか?2.)どうすれば修正できますか?

4

3 に答える 3

5

2010年に_Fooパラメータがワイドストリングであることを確認してください

于 2010-01-11T18:32:02.350 に答える
2

WideStringsはWindowsヒープに存在し、Delphiメモリマネージャによって管理されません。したがって、WideStringsは(他の長い文字列タイプとは異なり)exeとdllの間で問題なく共有できます。

于 2010-01-12T03:22:26.863 に答える
0

WideStringはマネージ型であり、dllと実行可能ファイルのメモリマネージャーが異なるため、間違ったデータを取得すると思います。dllを再コンパイルできる場合は、aPathタイプをPWideCharにします。

于 2010-01-11T21:42:18.267 に答える