3

DateTimeToStrプロジェクトのデバッグ中に関数を使用したい。評価/変更ウィンドウまたはウォッチ ウィンドウのいずれかを使用したいと考えています。これにより、常に「リンカーによって削除された関数」というエラーが発生します。

関数がプロジェクトで使用されていることを確認しました (また、デバッグする関数に明示的に呼び出しを配置し​​ました)。また、最適化をオフにして、プロジェクト全体を再コンパイルしました。

4

1 に答える 1

7

以下のプログラムを作りました

program WhereDidItGo;
{$APPTYPE CONSOLE}
uses
  SysUtils;

begin
  DateTimeToStr(0.0);
end.

そして、あなたが報告したものを正確に見つけました。評価/変更ウィンドウは、機能が削除されたことを報告します。変。

とにかく、私はそれをだますのに十分であるように思われたこれを試しました.

program WhyDoesThisSolveTheOddity;
{$APPTYPE CONSOLE}
uses
  SysUtils;

var
  FunctionPtr: function(const DateTime: TDateTime): string;
  VarFalse: Boolean;

begin
  if VarFalse then
    FunctionPtr := @DateTimeToStr;
end.

おそらく問題は、関数が として宣言されていることinlineです。私のテストでは、関数呼び出しは実際にはインライン化されていませんでした。

于 2012-10-05T14:16:02.233 に答える