Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Wackaloon
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 3
#1

Ошибка LNK2019 при подключении библиотеки с несколькими исходными файлами (используется Qt 5.2.0) - C++

31.03.2014, 21:12. Просмотров 345. Ответов 0
Метки нет (Все метки)

Используется Qt 5.2.0, но думаю проблема более глобальная в плане своих корней.

Есть класс CommonData, где объявлены несколько статических переменных
CommonData.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct Complex
{
    double zed;
    ...
};
 
typedef QVector<Complex> ValuesType;
 
class CommonData
{
public:
    CommonData(); 
    ~CommonData();
    static ValuesType *p_Values;
};
CommonData.срр
C++
1
2
3
4
5
6
7
8
9
10
#include "commondata.h"
 
ValuesType *CommonData::p_Values;
 
CommonData::CommonData()
{
}
CommonData::~CommonData()
{
}
Есть другой класс, который использует эту переменную
SignalProcess.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef SIGNALPROCESS_H
#define SIGNALPROCESS_H
#include "signalprocess_global.h"
#include "commondata.h"
 
class SIGNALPROCESSSHARED_EXPORT SignalProcess
{
 
public:
    SignalProcess();
    ~SignalProcess();
// функция которая работает с переменной p_Values
    static double someFunction();
};
 
#endif // SIGNALPROCESS_H
SignalProcess.срр
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "signalprocess.h"
 
SignalProcess::SignalProcess()
{
}
SignalProcess::~SignalProcess()
{
}
 
double SignalProcess::someFunction()
{
    double k(0.0);
    CommonData::p_Values->append(k)
    return k;
}
Все это добро компонуется и подключается как библиотека к другому проекту
При попытке компиляции выдается череда ошибок
C++
1
2
3
viewer.obj:-1: ошибка: LNK2019: unresolved external symbol "public: __thiscall CommonData::~CommonData(void)" (??1CommonData@@QAE@XZ) referenced in function "public: void * __thiscall CommonData::`scalar deleting destructor'(unsigned int)" (??_GCommonData@@QAEPAXI@Z)
viewer.obj:-1: ошибка: LNK2019: unresolved external symbol "public: __thiscall CommonData::CommonData(void)" (??0CommonData@@QAE@XZ) referenced in function "public: __thiscall Viewer::Viewer(class QWidget *)" (??0Viewer@@QAE@PAVQWidget@@@Z)
viewer.obj:-1: ошибка: LNK2019: unresolved external symbol "public: static class QVector<struct Complex> * CommonData::p_Values" (?p_Values@CommonData@@2PAV?$QVector@UQrsComplex@@@@A) referenced in function "private: void __thiscall Viewer::readFile(void)" (?readFile@Viewer@@AAEXXZ)
Как я понимаю, компилятор просто игнорирует существование CommonData.cpp и описанной в нем инициализации статической переменной и описания конструктора и деструктора.

Вариант решения проблемы, который я нашел - инициализировать статические переменные в срр файле, что уже есть, но не помогает.
Возможно проблема в подключении библиотеки, пробовал подключать тем же способом другую библиотеку с одним .h и одним .срр файлом, без статических переменных - все работало.

подключается библиотека в .pro файле таким образом
C++
1
2
3
4
5
6
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../monitor/SignalProcess/release/ -lsignalprocess
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../monitor/SignalProcess/debug/ -lsignalprocess
else:unix: LIBS += -L$$PWD/../monitor/SignalProcess/ -lsignalprocess
 
INCLUDEPATH += $$PWD/../lmonitor/SignalProcess
DEPENDPATH += $$PWD/../lmonitor/SignalProcess
так же в самом .h файле проекта подключается хедер
C++
1
#include "../monitor/SignalProcess/SignalProcess.h"
Добавлено через 3 часа 42 минуты
Проблема решена, необходимо было сделать структуру и класс экспортируемыми

CommonData.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct SIGNALPROCESSSHARED_EXPORT Complex
{
    double zed;
    ...
};
 
typedef QVector<Complex> ValuesType;
 
class SIGNALPROCESSSHARED_EXPORT CommonData
{
public:
    CommonData(); 
    ~CommonData();
    static ValuesType *p_Values;
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 21:12     Ошибка LNK2019 при подключении библиотеки с несколькими исходными файлами (используется Qt 5.2.0)
Посмотрите здесь:

Ошибка при подключении библиотеки - C++
Подключила библиотеку audiere, попробовала запустить следующий код: #include &lt;audiere.h&gt; #include &lt;iostream&gt; int main() { ...

Ошибка при подключении библиотеки - C++
ошибка при подключении библиотеки &quot;stdafx.h&quot; в VS 2013 вот, что пишет : 1&gt;x:\users\fene4ka\documents\visual studio...

Thread ошибка при подключении библиотеки - C++
подключаю библиотеку &lt;thread&gt; и выскакивает вот такая ошибка ...

Ошибка при подключении динамической библиотеки - C++
Всем привет! Помогите пожалуйста разобраться со следующим: Установил библиотеку cURL, раскидав либы и длл файлы по нужным папкам....

Ошибка при подключении библиотеки Dll - C++
Пши программу, которая через Dll общается с другой программой. О Dll известно только одно: названия нескольких функций внутри. Более...

Ошибка при подключении заголовочного файла: "error LNK2019: unresolved external symbol" - C++
Добрый день. Я что то не могу разобраться как работают эти заголовки на с++(вижуал студия). Создал Test.h В нём написал ...

Ошибка при подключении библиотеки graphics и файла ресурсов libbgi.lib - C++
Собственно подключаю библиотеку и файл ресурсов к проекту, вроде бы подключается, но выдаёт ошибку вида: fatal error LNK1120:...

Создание статической библиотеки из нескольких файлов с несколькими заголовочными файлами - C++
В общем, имеется несколько классов, как водится - каждый имеет .h/.cpp. Решил собрать все это дело в библиотеку, но вот беда - все равно...

Ошибка при подключении библиотеки: "Не удается открыть включение" - C++
Появляется ошибка в библиотеке где взять эту библиотеку? не могу понять Вот ошибка #include &lt;number_of_plants.h&gt; int AddPlant()...

Структуры/Работа с файлами(ошибка линковщика error LNK2019: ссылка на неразрешенный внешний символ) - C++
Задание: Дан файл содержащий сведения о видах журналов редакции.Структура записи файла: -код журнала -название -год выпуска ...

Ошибки при подключении библиотеки SFML - C++
Знаю тема уже заезжана, но никак не могу разобратся в чём проблема. 1) IDE visual studio 2015 community edition x64 2) SFML 2.4.0...

При подключении библиотеки вылетает программа - C++
Пишу игру шашки, человек-компьютер. Основной алгоритм реализован писал в RAD Studio 2010 - консольное приложение. Графика тоже реализована...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru