-1

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

我将如何在 c++ 中创建一个静态库,我认为它是一个 dll(但我很可能是错误的 :S )。我刚开始使用 c++,但我对将我的函数移动到我制作的每个新程序感到非常恼火,那么我将如何制作一个每次都可以引用的库呢?

感谢您提供的任何帮助,我非常感谢。

4

1 回答 1

1

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

STEP1:首先使用 -c 标志构建 .o 文件,这在最基本的层面上让编译器知道缺少 main 是可以的。

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

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

COMMAND2: g++ someMainFile.cpp someLib.o -o someMainProgram

在此过程中动态链接的好处是您没有符号重复。在上述情况下, someLib.o 中存在的符号也将最终存在于 someMainProgram 中(例如:如果您编译然后从系统中删除了 someLib.o 的所有出现,您的程序仍将运行!)。如果它们在 DLL 中,则 someMainProgram 将仅具有 someMainFile.cpp 中的符号,并且它会尝试在运行时在可用的 dll 中查找 someLib 中的符号。

于 2013-06-18T14:22:54.173 回答