为具有特定基址的Windows构建DLL

为具有特定基址的Windows构建DLL,windows,dll,ada,gnat,gprbuild,Windows,Dll,Ada,Gnat,Gprbuild,我正在为Ada中的Windows库开发一个项目,该项目必须在DLL中编译,通过GPRBuild从.gpr项目开始。我能够为Windows生成一个工作的DLL,但现在我想为DLL的位置指定基址。目前,我可以通过editbin实用程序设置DLL位置,但我希望将此步骤直接集成到.gpr文件中。我已尝试使用Library\u Options属性: for Library_Options use ("-Wl,--disable-auto-image-base", "-Wl,-

我正在为Ada中的Windows库开发一个项目,该项目必须在DLL中编译,通过GPRBuild从.gpr项目开始。我能够为Windows生成一个工作的DLL,但现在我想为DLL的位置指定基址。目前,我可以通过
editbin
实用程序设置DLL位置,但我希望将此步骤直接集成到.gpr文件中。我已尝试使用
Library\u Options
属性:

for Library_Options use ("-Wl,--disable-auto-image-base", "-Wl,--image-base=0x20000000");

但这似乎没有帮助。编译后是否可以直接执行我想要的操作,或者是否真的需要使用外部脚本?

指定详细模式以查看出错的地方;考虑使用<代码>使调用<代码> GPRBug,正如建议的那样,因为Windows的GNAT是基于MINW的,可能会有帮助。您可以使用自己的规范文件覆盖默认规范文件,请参阅。您也可以尝试在shell或CMD提示符中独立运行linker命令:如果您可以让参数以这种方式工作,那么通过gpr文件提供参数是另一个问题。