2014-10-08 4 views
-1

Я столкнулся с проблемой компиляции/ссылки g ++. Я хочу реализовать динамический массив. Я разделил определение и реализацию класса на файлы «DArray.h» и «DArray.cpp». И выполните тест в файле «DArraytest.cpp», в котором содержится основная функцияn.g ++ при компиляции и связывании нескольких файлов

все там файлы находятся в одном каталоге, и я использую следующую команду для компиляции г ++ * .cpp

, но она по-прежнему дает мне такую ​​ошибку ссылку /tmp/cc4tu73o.o: В функции __static_initialization_and_destruction_0(int, int)': DArray.cpp:(.text+0x1d): undefined reference to станд: : ios_base :: Init :: Init() ' DArray.cpp :(. текст + 0x34): неопределенная ссылка на std::ios_base::Init::~Init()' /tmp/ccdHUZjJ.o: In function main': DArraytest.cpp :(текст + 0x12): неопределенная ссылка на DArray<int>::DArray()' DArraytest.cpp:(.text+0x2e): undefined reference to DArray :: append (int const &) DArraytest.cpp :(текст + 0x4a): неопределенная ссылка на DArray<int>::append(int const&)' DArraytest.cpp:(.text+0x66): undefined reference to DArray :: append (int const &) '.DArraytest.cpp :(текст + 0x82): неопределенная ссылка на DArray<int>::append(int const&)' DArraytest.cpp:(.text+0xa3): undefined reference to станд :: соиЬ» DArraytest.cpp :(текст + 0xa8). Неопределенная ссылка на std::ostream::operator<<(int)' DArraytest.cpp:(.text+0xb0): undefined reference to станд :: basic_ostream> & станд :: епсИ> (станд :: basic_ostream> &). DArraytest.cpp :(текст + 0xb8): неопределенная ссылка на std::ostream::operator<<(std::ostream& (*)(std::ostream&))' DArraytest.cpp:(.text+0xc9): undefined reference to DArray :: ~ DArray() ' DArraytest.cpp :(текст + 0xeb.): не определено ссылкой на DArray<int>::~DArray()' /tmp/ccdHUZjJ.o: In function __static_initialization_and_destruction_0 (интермедиат , int) ': DArraytest.cpp :(текст + 0x11d): неопределенная ссылка на std::ios_base::Init::Init()' DArraytest.cpp:(.text+0x134): undefined reference to std :: ios_base :: Init :: ~ Init()' /tmp/ccdHUZjJ.o:(.eh_frame+0x13): undefined ссылка на `__gxx_personality_v0 ' collect2: ошибка: ld возвращен 1 статус выхода

Может кто-нибудь мне помочь

+1

Похоже, вы определили шаблоны в исходном файле. Переместите их в заголовок: http://stackoverflow.com/questions/495021 –

ответ

0

Я думаю, вам нужно предоставить все имена файлов .cpp для g ++. Чтобы этого избежать, вы можете создать make-файл, который может автоматически применять одно и то же правило компиляции ко всем файлам .cpp.

Смежные вопросы