我已经完成了我的C ++ 1/2类,我们没有涉及链接到库或向C ++代码添加其他库的任何内容。
我一直在干草,试图解决这个问题。我一直无法找到link
对象的基本信息。最初我认为问题是IDE(Netbeans;和Code :: Blocks)。但是,我无法设置wxWidgets
和GTKMM
。
有人能指出我关于Cpp应用程序中#includ
文件和link
文件的术语和基本信息的正确方向吗?基本上我想要/需要知道关于这个过程的一切。 .dll
,.lib
,.o
,.lib.a
,.dll.a
之间的差异。 .h
和“库”之间的区别(.dll,.lib是否正确?)
我理解我需要阅读我正在使用的编译器文档;但是所有编译器(我所知道的)都使用链接器和头文件;我需要了解这些信息。
请指出我正确的方向! :
到目前为止,在我的任务中,我发现了:
Linker
将已编译的库链接到您的项目。.a
个文件是静态库(Windows中为.lib
).dll
是共享库(* nix中的.so
)答案 0 :(得分:0)
在类Unix系统上,您通常会在/usr/lib
中找到库。 .a
扩展名表示您正在处理使用ar创建的存档文件。它们是从扩展名为.o
的目标文件创建的。然后,链接器可以在编译时解析引用。它们被称为静态库,因为来自目标文件的机器代码被复制到最终的可执行文件中。
如果您考虑使用数学库,您将在/usr/bin/libm.a
找到库本身,并在include目录中找到相应的头文件(例如:/ usr / include / math.h)。您必须为编译器包含标头math.h
,并且链接器指定库libm.a
来解析引用,编译器留下这些引用。
共享库使用扩展程序.so
。如果您想要一个小的可执行文件,它们很有用。这里,链接器不解析引用,但是当可执行文件启动时,加载器将动态查找库并根据未解析的引用将它们加载到内存中。
.dll是用于Microsoft Windows的动态链接库,我对它们不是很熟悉,但我认为,所涉及的步骤是相似的。