-5

次のように、DLL でいくつかの関数を作成しました。

procedure DoThis(A: PChar): Boolean; stdcall;
begin
f := TFileStreamCreate(A, fmCreate);
f.read()
f.free;
end;

次に、2 つの名前でエクスポートしました。

export
  DoThis,
  DoThis name 'DoThat';

ほとんどの場合、この「名前変更」は機能します。しかし、少なくとも 1 つのケースでは、名前が変更された関数 "DoThat" は、実際のファイルからではなく、void からデータを読み取ります。同じファイルで DoThis を呼び出すと、うまく機能します。FastMM4 のおかげですべてのメモリ リークを削除しました (コードを通常のコンソール アプリに変換しました)。

質問は次のとおりです。

この「名前の変更」は合法的な行為ではありませんか?

合法である場合、コンソール アプリに変更せずに FastMM4 で DLL をデバッグできますか?

4

1 に答える 1

3

質問で説明したことは、現実と一致していません。

この「名前の変更」は合法的な行為ではありませんか?

同じ関数を複数の名前でエクスポートすることは完全に合法です。あなたが説明する問題は起こりません。

コンソール アプリに変更せずに、FastMM4 で DLL をデバッグできますか?

はい、できます。[実行パラメーター] ダイアログでホスト アプリケーションを指定すると、DLL をデバッグできます。

于 2013-05-12T13:15:26.050 に答える