Ces*_*ero 7 delphi compiler-directives
我正在尝试知道项目是否是一个库,在阅读帮助后我写了这段代码不起作用:
{$IF DEFINED(LIBPREFIX)}
{$DEFINE PROJECT_IS_EXECUTABLE}
{$UNDEF PROJECT_IS_LIBRARY}
{$ELSE}
{$DEFINE PROJECT_IS_EXECUTABLE}
{$UNDEF PROJECT_IS_LIBRARY}
{$IFEND}
Run Code Online (Sandbox Code Playgroud)
我试过DEFINED,DECLARED和
{$IF (LIBPREFIX = '')}
Run Code Online (Sandbox Code Playgroud)
每次尝试总是为DLL和程序返回相同的内容.如何仅使用内置编译器指令执行此操作?
编辑
我的目的是从"PE文件"中删除额外的信息.
我直接在.dpr项目文件中进行,所以不管其他单元是如何编译的,但我不能在DLL项目中做同样的事情.
因此我正在寻找一种方法来阻止它在DLL项目中.
这就是我解决这个问题的方法,我将这个指令添加到我的.dpr程序中:
{$DEFINE STRIPE_PE_INFO}
{$DEFINE STRIPE_RTTI}
{$I DDC_STRIP.inc}
Run Code Online (Sandbox Code Playgroud)
并且DDC_STRIP.inc具有所有逻辑.
Dav*_*nan 11
在编译文件时无法知道这一点.源文件可以编译为.dcu,然后链接到任何类型的项目.一个很好的例子是RTL和VCL单元.
您可以做的最好的事情是在项目选项中定义一个条件,指示项目是否是库.但是,在构建使用此单元的任何项目时,您需要确保始终重新编译.dcu.