gpt4 book ai didi

c++ - 将静态库与另一个静态库链接并在 exe 中使用主库

转载 作者:太空狗 更新时间:2023-10-29 21:45:18 27 4
gpt4 key购买 nike

在 eclipse 中,我使用 MinGW 编译器在 Windows 平台上完成了以下操作 -C_proj.exe--->链接---->libB_proj.a----->链接---->libA_proj.a

  1. 当链接 A 和 B 时,我只指定了 libA_proj.a 的路径(不是库名称,因为这似乎是不可能的!)

  2. 在 C 中使用 B 时,我必须同时指定 libA_proj.a 和 libB_proj.a。

代码 -

//a.h
class a
{
public:
void printA();
};

//a.cpp
void a::printA()
{
std::cout<<"This is 'a'"<<std::endl;
}
//b.h
class b
{
public:
void printB();
void printA();
};
//b.cpp
void b::printB()
{
std::cout<<"This is 'B'"<<std::endl;
}

void b::printA()
{
std::cout<<"This is 'B'....calling A"<<std::endl;
a objA;
objA.printA();
}

//c.cpp
int main()
{
b objB;
objB.printB();
objB.printA();
return 0;
}

现在我的要求是——我不想将 B 和 A 都与 C exe 链接。有没有办法只将 B 与 C 链接并完成工作,以便我可以只向第三方提供 B 和 C exe?

最佳答案

lib 文件(或 .a 文件)是目标文件的集合 - 有点像 zip 文件,但没有压缩。所以你不能真正将一个 lib 文件与另一个 lib 文件链接起来。

您可以做的是从两个较小的库中形成一个大型库 - 本质上是解包然后重新打包为一个库。您使用 ar -x libfile.a 提取模块,然后您可以使用 ar -a libfile2.a name1.o name2.o 将目标文件添加到新图书馆。

但是,我只想告诉您的两个组件的用户链接到两个库。更简单的解决方案。

关于c++ - 将静态库与另一个静态库链接并在 exe 中使用主库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17924019/

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