在c++中创建静态库,新手

Creating a static library in C++, newbie

本文关键字:新手 静态 创建 c++      更新时间:2023-10-16

只是一个简短的问题,我相信这个论坛上的人很容易回答。

我如何去创建一个静态库,我相信是一个dll(但我很可能错了:S),在c++中。我刚开始使用c++,但是我对把函数移到我编写的每个新程序中感到非常恼火,那么我该如何创建一个每次都可以引用的库呢?

谢谢你的帮助,我真的很感激。

我相信您想要的是使用-c标志。这基本上允许你编译一个目标文件,而不需要main函数。然后你可以在任何程序中使用这个目标文件,你只需要包含头文件,这样你的新对象就可以编译了。然后它们将链接到这个.o文件。您也可以考虑将其转换为。a文件,但这是一个不必要的步骤。.a和.o文件之间唯一真正的区别是数据的存储方式,以及利用它们的编译命令。这将是利用.o文件的典型命令系列。

STEP1:首先构建.o文件,带有-c标志,这在最基本的级别上让编译器知道没有main是可以的。

COMMAND1: g++ -c someLib.cpp -o someLib.o

STEP2:现在将库中的对象和想要使用"库"的cpp文件合并到同一个程序中。

COMMAND2: g++ someMainFile.cpp someLib.o -o someMainProgram
在这个过程中,动态链接的好处是你不会有符号重复。在上面的例子中,存在于someLib中的符号。o也将最终存在于someemainprogram中(例如:如果你编译然后删除所有出现的someelb)。从您的系统中删除0,您的程序仍然可以运行!)。如果它们在DLL中,则someemainprogram将只具有someemainfile .cpp中的符号,并且它将在运行时尝试在可用的DLL中查找someelib中的符号。