Here一个人问“如何用C ++创建自己的库?”。这正是我的问题。这个问题有一个答案:
- 创建文件“mylibrary.h”和“mylibrary.cpp”。
- 只编译库,它不应该有“main()”函数 它。此步骤将生成一个名为“myfile.o”的目标文件。
- 创建另一个名为“main.cpp”的文件。在main.cpp中 你需要#include“mylibrary.h”。
- 编译main.cpp并将步骤2中的库添加到link in(在本例中为“myfile.o”)。如果你不添加这个库,你会得到一个 错误消息,如“链接器错误 - 无法找到函数定义”,或 类似的东西。
醇>
但我还有一些问题:
main()
功能。但是这个主要功能应该是什么?我的程序启动时,我不希望我的库默认执行某些操作。我希望它包含一组仅在显式调用它们时才执行的函数。#include "mylibrary.h"
放入main.cpp,所以我添加了库?或者我需要做更多的事情来添加库?你能帮我理解答案吗?
ADDED:我想我需要使用Eclipse来生成.a
,.lib
,.so
或.dll
个文件?有谁知道我怎么做以及我应该产生什么?
答案 0 :(得分:2)
对于此示例,请考虑提供阶乘函数的“库”。为简单起见,我使用自由函数。
// factorial.h
int factorial(int input);
// factorial.cpp
#include "factorial.h"
int factorial(int input) {
if(input > 0) return input * factorial(input - 1);
else if(input == 0) return 1;
else return 0;
}
现在编译这些文件以生成factorial.o
,但不要链接。 (相应地配置Eclipse构建命令。如果使用gcc,请适当使用-c
和-o
标志。请参阅编译器文档以了解这些标志的作用。)
接下来创建一个main.cpp
(您实际上可以将其命名为任何名称。)
// main.cpp
#include "factorial.h"
int main() {
// use your library code here to make sure it is usable and working.
factorial(3);
factorial(5);
// etc.
}
现在将其编译为main.o
,然后将其与之前的factorial.o
链接在一起以生成可执行文件。实际上,您可以跳过中间main.o
步骤,并使用适当的编译器选项一步完成这两个步骤。