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