当文件相互依赖时,如何使用g ++将多个cpp文件编译成单个可执行文件?

时间:2013-12-09 03:05:01

标签: c++ g++

我正在用c ++制作一个接受极高值的计算器。我为数字创建了一个类,我在标题中定义了它。我的第一个cpp文件包含基本函数,如add,subtract,multiply和divide (link)。我的第二个cpp文件包含类定义,允许我根据需要操作数字对象(link)。我的第三个cpp文件是main,它还没有多少(link)。我正在尝试使用以下方法将这些文件链接在一起:

g++ -o bignumbers bignum_funcdefs.cpp bignum_classdefs.cpp main.cpp

根据我的阅读,以这种方式通过g ++传递多个文件与一次传递一个文件没什么不同。显然问题是bignum_classdefs.cpp需要bignum_funcdefs.cpp中的函数,但我不知道如何使它们可访问。我也试过这个:

g++ -c bignum_funcdefs.cpp
g++ -c bignum_classdefs.cpp bignum_funcdefs.o

但这给了我同样的错误,即funcdefs中的函数尚未定义。我是以错误的方式来做这件事的吗?有没有办法让这些文件以它们的方式工作?有没有更好的方法来构建我的cpp文件,类和标头?可以找到整个回购here,非常感谢任何建议。使用我的代码的具体建议会有所帮助。

1 个答案:

答案 0 :(得分:6)

分隔您的班级定义和您的实施。将类的设计放在.h文件中,并将其包含在两个cpp文件中。这是将项目扩展到单个文件之外的典型模式。

同样声明(但不实现)一个文件中的任何函数,并由.h文件中的另一个调用。这通常看起来像:

extern bignum addNumbers(bigNumber &, bigNumber &) ;

我看到您的班级有.h,所以只需将bignum_funcdefs.cpp中所有函数的声明添加到bignum_decs.h的底部