Delphi 如何在VCL项目中包含FMX.Types

Delphi 如何在VCL项目中包含FMX.Types,delphi,firemonkey,Delphi,Firemonkey,我需要调用FMX.Types中定义的Log.d。然而,我的项目不是Firemonkey项目,而是VCL项目。它按预期编译和工作,但我收到以下警告: [dcc64提示]H2161警告:重复资源:类型12(光标 组),ID 32761;文件c:\程序文件 (x86)\embarcadero\studio\18.0\lib\Win64\release\FMX.Controls.Win.res 保留资源;文件c:\程序文件 (x86)\embarcadero\studio\18.0\lib\Win64\

我需要调用FMX.Types中定义的
Log.d
。然而,我的项目不是Firemonkey项目,而是VCL项目。它按预期编译和工作,但我收到以下警告:

[dcc64提示]H2161警告:重复资源:类型12(光标 组),ID 32761;文件c:\程序文件 (x86)\embarcadero\studio\18.0\lib\Win64\release\FMX.Controls.Win.res 保留资源;文件c:\程序文件 (x86)\embarcadero\studio\18.0\lib\Win64\release\Controls.res资源 丢弃


他们是否有任何全局定义可以表明该项目是一个VCL项目,这样我就可以忽略在VCL项目上使用FMX.Types和
Log.d

要扩展我的评论,您可以通过简单地“酝酿您自己的”
Log.d
等同物来回避整个问题
Log.d
在Windows上调用
OutputDebugString
,因此您可以按照以下方式构建一些东西,并将FMX.Types帮助器单元完全排除在外,从而完全避免问题:

uses Windows;

procedure Log(const Msg: string; const Args: array of const); overload;
var
  LMsg: string;
begin
  LMsg := Format(Msg, Args);
  OutputDebugString(PChar(LMsg));
end;

procedure Log(const Msg: string); overload;
begin
  OutputDebugString(PChar(Msg));
end;

问题是什么。是否要检测项目是否为FMX?或者您想在VCL项目中包括FMX装置?你似乎两个都问。请只问一个问题。任何一篇论文!因为它们都能解决我的问题。因此,检测项目是否为FMX(从项目中排除FMX单元)——或者——在vcl项目中包括FMX单元的任何方式请选择一个。你不能一次问两个问题。不过,为了帮助您选择一个,我可以告诉您,没有任何条件可以将项目标识为FMX。我是否可以建议您只需调用
OutputDebugString
,而不必担心调用
Log.d
,这样就不需要引入该FMX单元,从而避免整个问题
Log.d
在Windows上调用
OutputDebugString
——您可以轻松创建一个包装例程,该例程采用与
Log.d
类似的参数。然后难题就消失了。@blong:完美的解决方案,谢谢!!很遗憾你把它作为评论写了下来,因为它应该是一个可接受的解决方案。。。