一个简单的问题,我相信这个论坛上的人们很容易回答。
我将如何创建一个静态库,我认为这是一个dll(但我很可能是错的:S),在c ++中。 我刚刚开始使用c ++但是我对将我的函数移动到我制作的每个新程序感到非常恼火,那么我将如何创建一个我每次都能引用的库?
感谢您给予的任何帮助,我真的很感激。
答案 0 :(得分:1)
我相信你想要的是使用-c标志。这样做基本上允许您编译目标文件,而无需主函数。然后,您可以在任何程序中使用此目标文件,只需要包含头文件,这样您的新对象就可以编译。然后,他们将链接到此.o文件。您也可以考虑将其转换为.a文件,但这是不必要的步骤。 .a和.o文件之间唯一真正的区别是数据的存储方式以及利用它们的编译命令。这将是利用.o文件的典型命令系列。
第1步:首先使用-c标志构建.o文件,在最基本的级别上,编译器可以知道缺少主文件是正确的。
COMMAND1: g++ -c someLib.cpp -o someLib.o
第2步:现在将我们库中的对象和想要使用“库”的cpp文件合并到同一个程序中。
COMMAND2: g++ someMainFile.cpp someLib.o -o someMainProgram
动态链接在此过程中的好处是您没有符号重复。在上面的例子中,someLib.o中存在的符号也将最终存在于someMainProgram中(EX:如果你编译然后从系统中删除了someLib.o的所有出现,那么你的程序仍会运行!)。如果它们在DLL中,someMainProgram只会在someMainFile.cpp中包含符号,并且它会尝试在运行时在someLib中找到可用dll中的符号。