Ошибка multiple definition of… при подключении моей библиотеки в любой h файл [дубликат]

191
12 февраля 2018, 04:36

На данный вопрос уже ответили:

  • ifndef, define, endif 2 ответа

Вот библиотека

Когда я подключаю ее в любой файл h получаю ошибку переопределения, что интересно что если подкл. к cpp файлам все нормально, это очень неудобно потому что надо часто делать классы состоящие из h и cpp и подкл. в сpp это бред. Немного дополню описание вопроса. Вот видос с подкл. библиотеки, правда я незнаю будет ли он работать, ибо я в своей библиотеке делал, позже делал подкл. Open Cv3 Поэтому возможно в pro файл надо добавить пути openCv но они есть в profile самой библиотеки. Например вот класс:

#ifndef MCONTROLLER_H
#define MCONTROLLER_H
    #include <clicklib.h> //тут ошибка
    //#include <qobject.h>
    class MController
    {
    public:
        MController();
    };
    #endif // MCONTROLLER_H
#include "mcontroller.h" //а тут если подкл не будет будет ошибка
MController::MController()
{
}

А в новой версии, которую я написал уже увеличилось не 5 а 25

Answer 1

Ну так у вас в заголовочном файле clicklib.h сидят определения переменных

int startTime = 0;
...
SystemTrey* st;

Разумеется, будут ошибки линковки с множественными определениями.

Та же ошибка

READ ALSO
Как установить шаблон win32 для Visual Studio?

Как установить шаблон win32 для Visual Studio?

Хочу начать знакомство с формами, но не могу установить необходимы шаблонОблазил уже весь инсталлер, не вижу ничего похожего

257
Перегрузка оператора `&lt;&lt;`

Перегрузка оператора `<<`

Как правильно перегрузить этот шаблон? У string перегрузка << ошибки не даёт

199
Наследование шаблона класса

Наследование шаблона класса

Ошибка C2512 TypeSize: нет подходящего конструктора по умолчанию Project1 e:\sources\l_151_classtemplateinheritancecpp 39

179
Как присвоить строке новое значение в C++?

Как присвоить строке новое значение в C++?

Пробую присвоить строке символов новое значение:

180