我遇到了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退出状态
有人可以帮助我
答案 0 :(得分:0)
我认为您需要为g ++提供所有.cpp文件名。为避免这种情况,您可以创建一个makefile,它可以自动将相同的编译规则应用于所有.cpp文件