什么可能导致编译器不生成控制台输出

Tob*_*s R 5 delphi dunit delphi-2010

我有一个DUnit项目,如果我添加一些单位,将无法编译为控制台.
项目(dpr)由向导创建并CONSOLE_TESTRUNNER定义.

{$IFDEF CONSOLE_TESTRUNNER}
{$APPTYPE CONSOLE}
{$ENDIF}

begin
  Application.Initialize;
  if IsConsole then // <-- IsConsole is set to False.
    with TextTestRunner.RunRegisteredTests do
      Free
  else
    GUITestRunner.RunRegisteredTests;
end.
Run Code Online (Sandbox Code Playgroud)

使其失败的单位包括一些VCL组件,但没有对它们运行测试.
我甚至试图设置链接器选项,但它没有任何区别.
有人遇到过类似的问题吗?
只是为了澄清:这个项目是Delphi 2010中的Win32.

Dav*_*nan 5

该代码对我来说很好.我可以想到Delphi没有生成控制台应用程序的两个原因:

  1. CONSOLE_TESTRUNNER 没有定义.
  2. {$APPTYPE GUI}的项目代码中有一个地方.

我有理由相信上面第2项是您遇到问题的原因.

  • 谢谢,这是APPTYPE.Arrghhh. (3认同)