crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Проблема связывания в Qt, multiple definition of ...
denis_panchenko
  опции профиля:
сообщение 28.8.2011, 18:26
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 28.8.2011
Пользователь №: 2834

Спасибо сказали: 0 раз(а)




Репутация:   0  


Объясню суть проблемы на примере.
Имеется 3 файла:
1) a.h
//----------------------
#ifndef a_h
#define a_h

namespace ns
{
    void foo(){};
}
#endif
//---------------------

2) b.h
//---------------------
#ifndef b_h
#define b_h

#include "a.h"

#endif
//---------------------

3) c.h
//---------------------
#ifndef c_h
#define c_h

#include "b.h"

#endif

При таком положении дел все компилируется и работает, но стоит добавить файл
b.cpp
//----------------------
#include "b.h"
//----------------------


как линкер выдаёт ошибку: a.h:6: multiple definition of `ns::foo()'.
Не понимаю чем вызвана эта ошибка и как в данном случае с ней справиться? Задаю вопрос в разделе про Qt, так как это упрощенная модель структуры программы, которая создаётся в Qt Creator 4.6.2

Сообщение отредактировал ViGOur - 1.11.2011, 20:03
Причина редактирования: Добавил тэги CODE
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
denis_panchenko
  опции профиля:
сообщение 28.8.2011, 18:55
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 28.8.2011
Пользователь №: 2834

Спасибо сказали: 0 раз(а)




Репутация:   0  


Qt Creator выдает следующие три сообщения:

a.h:3: multiple definition of `foo()'
a.h:3: first defined here
error: collect2: ld returned 1 exit status

Никак не могу понять, почему он говорит, о двойном объявлении функции...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 14.12.2025, 19:08