gpt4 book ai didi

c++ - C++ 中的动态和静态库

转载 作者:IT老高 更新时间:2023-10-28 21:46:06 25 4
gpt4 key购买 nike

在学习 C++ 的过程中,我遇到了动态库和静态库。

我通常了解它们的要点:编译后的代码以包含到其他程序中。

不过,我想知道一些关于他们的事情:

  • 除了 main() 函数之外,编写它们与普通 C++ 程序有什么不同吗?
  • 编译后的程序如何成为库?它显然不是可执行文件,那么我该如何将“test.cpp”转换为“test.dll”?
  • 一旦我得到它的格式,我如何将它包含在另一个程序中?
  • 是否有一个标准的放置位置,以便编译器/链接器可以轻松找到它们?
  • 动态库和静态库之间有什么区别(技术和实践)?
  • 如何在我的代码中使用第三方库(我正在查看 MySql C++ 连接器的 .dylib.a 文件)

我发现的所有与图书馆相关的东西似乎都是针对那些已经知道如何使用它们的人。然而,我不知道。 (但愿意!)

谢谢!

(我还要注意我使用的是 Mac OS X,虽然我更愿意保持 IDE 中立或面向命令行,但我使用 QtCreator/Netbeans)

最佳答案

Is writing them any different than a normal C++ program, minus the main() function?

没有。

How does the compiled program get to be a library? It's obviously not an executable, so how do I turn, say 'test.cpp' into 'test.dll'?

在编译时传递 -dynamiclib 标志。 (默认情况下,结果的名称仍然是 a.out。在 Mac OS X 上,您应该将动态库命名为 lib***.dylib,而在 Linux 上, lib***.so(共享对象))

Once I get it to its format, how do I include it in another program?

首先,制作一个头文件,以便其他程序可以#include知道你的dylib中可以使用哪些函数。

其次,链接到您的 dylib。如果您的 dylib 命名为 libblah.dylib,则将 -lblah 标志传递给 gcc。

Is there a standard place to put them, so that whatever compilers/linkers need them can find them easily?

/usr/lib/usr/local/lib.

What is the difference (technically and practically) between a dynamic and static library?

基本上,对于静态库,整个库都嵌入到它“链接”到的文件中。

How would I use third party libraries in my code (I'm staring at .dylib and .a files for the MySql C++ Connector)

查看第三个答案。

关于c++ - C++ 中的动态和静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2119708/

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