编译和链接多个文件时的g ++

时间:2014-10-08 23:50:02

标签: c++ hyperlink g++

我遇到了g ++编译/链接问题。 我想实现一个动态数组。 我将类定义和实现分为“DArray.h”和“DArray.cpp”文件。 并在“DArraytest.cpp”文件中进行测试,其中包含一个主函数。

所有文件都在同一目录下,我使用以下命令进行编译 g ++ * .cpp

但它仍然给我这样的链接错误  /tmp/cc4tu73o.o:在函数__static_initialization_and_destruction_0(int, int)': DArray.cpp:(.text+0x1d): undefined reference to std :: ios_base :: Init :: Init()' DArray.cpp :(。text + 0x34):对std::ios_base::Init::~Init()' /tmp/ccdHUZjJ.o: In function main'的未定义引用: DArraytest.cpp :(。text + 0x12):未定义引用DArray<int>::DArray()' DArraytest.cpp:(.text+0x2e): undefined reference to DArray :: append(int const&amp;)' DArraytest.cpp :(。text + 0x4a):对DArray<int>::append(int const&)' DArraytest.cpp:(.text+0x66): undefined reference to的未定义引用DArray :: append(int const&amp;)' DArraytest.cpp :(。text + 0x82):对DArray<int>::append(int const&)' DArraytest.cpp:(.text+0xa3): undefined reference to std :: cout'的未定义引用 DArraytest.cpp :(。text + 0xa8):未定义引用std::ostream::operator<<(int)' DArraytest.cpp:(.text+0xb0): undefined reference to std :: basic_ostream&gt;&amp; std :: endl&gt;(std :: basic_ostream&gt;&amp;)' DArraytest.cpp :(。text + 0xb8):未定义引用std::ostream::operator<<(std::ostream& (*)(std::ostream&))' DArraytest.cpp:(.text+0xc9): undefined reference to DArray :: ~DArray()' DArraytest.cpp :(。text + 0xeb):对DArray<int>::~DArray()' /tmp/ccdHUZjJ.o: In function __ static_initialization_and_destruction_0(int,int)'的未定义引用: DArraytest.cpp :(。text + 0x11d):未定义引用std::ios_base::Init::Init()' DArraytest.cpp:(.text+0x134): undefined reference to std :: ios_base :: Init :: ~Init()' /tmp/ccdHUZjJ.o:(.eh_frame+0x13):未定义对`__gxx_personality_v0'的引用 collect2:错误:ld返回1退出状态

有人可以帮助我

1 个答案:

答案 0 :(得分:0)

我认为您需要为g ++提供所有.cpp文件名。为避免这种情况,您可以创建一个makefile,它可以自动将相同的编译规则应用于所有.cpp文件