gpt4 book ai didi

c++ - gnat gprbuild : how to build a dynamic dll and link with a static c++ library

转载 作者:行者123 更新时间:2023-11-30 04:02:21 27 4
gpt4 key购买 nike

我有一个完整的 Ada 项目,我想构建它以获得一个动态 dll。因此,我必须将它与另一个静态库 (myanotherlibrary.lib) 链接起来。

我使用这个命令行:

gprbuild -d "D:\My_grp_project\My_grp_project.gpr"

这里是 .gpr 的内容:

project My_grp_project is

Architecture := "x86";

for Languages use ("Ada");
for Source_Dirs use (".", "source", "source\common");
for Library_Dir use "dll\" & Architecture;
for Library_Ali_Dir use "ali\" & Architecture;
for Library_Name use "My_grp_project";
for Library_Kind use "dynamic";
for Object_Dir use "obj\" & Architecture;

package Linker is
for Default_Switches ("Ada") use ("-L.", "-lbar");
end Linker;

end My_grp_project;

我把“myanotherlibrary.lib”放在目录“D:\My_grp_project\”中,但它仍然没有链接:“undefined reference to ...”

有人能帮帮我吗?

问候格伦

最佳答案

查看 docs ,我认为您应该使用 Library_Options 属性而不是 package Linker:

for Library_Options use ("-L.", "-lbar”);

(我很困惑 - 你是说 myanotherlibrary.lib 还是 bar.lib?)

我有点担心从动态库中使用静态库:我希望使用 -fPIC 或等效开关构建动态库以获得与位置无关的代码,这样就可以在每个使用它的可执行文件的不同地址看到相同的加载库二进制文件。

关于c++ - gnat gprbuild : how to build a dynamic dll and link with a static c++ library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25117653/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com