Russian Qt Forum
Апрель 25, 2024, 18:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] Qwt. Сборка статической библиотеки из Qt Creator'а. Ошибки линковки  (Прочитано 5984 раз)
8Observer8
Гость
« : Август 27, 2014, 16:40 »

Привет!

Ситуация такая, что я не понимаю смысл двух этих ошибок:
Цитировать
C:\Qt\Qt5.3.1\5.3\Src\qtbase\src\concurrent\qtconcurrentthreadengine.cpp:126: error: undefined reference to `_imp___ZTVN12QtConcurrent16ThreadEngineBaseE'
Цитировать
C:\Qt\Qt5.3.1\5.3\Src\qtbase\src\concurrent\qtconcurrentthreadengine.cpp:131: error: undefined reference to `_imp___ZTVN12QtConcurrent16ThreadEngineBaseE'

Я нашёл файл "qtconcurrentthreadengine.cpp" и строчку 126:


А что не так? Что означают такие ошибки?
« Последнее редактирование: Сентябрь 02, 2014, 12:15 от 8Observer8 » Записан
Bepec
Гость
« Ответ #1 : Август 28, 2014, 07:49 »

Цитировать
Header:   #include <QtConcurrent>
qmake:   QT += concurrent
Since:    Qt 4.4

Добавка в pro файле есть?
Записан
8Observer8
Гость
« Ответ #2 : Август 28, 2014, 07:52 »

Цитировать
Header:   #include <QtConcurrent>
qmake:   QT += concurrent
Since:    Qt 4.4

Добавка в pro файле есть?
Я статическую библиотеку собирал. Там при создании проекта поставил галочки: QtCore, QtGui, QtWidgets, QtOpenGL, QtPrintSupport и QtSvg

Вообщем, я хотел написать инструкцию по созданию статических библиотек на примере Qwt. Но Qwt плохой кандидат для этого, так как его можно собрать по инструкции: http://qwt.sourceforge.net/qwtinstall.html

Для моих нужд вполне подходит QCustomPlot. Здесь инструкция: http://www.qcustomplot.com/index.php/tutorials/settingup

Вот моя сырая инструкция по сборке статических библиотек. Я её потом допишу на примере Bullet или Google Test. А пока она на примере Qwt и не рабочая:

Пошаговая инструкция, как собрать статическую библиотеку из исходников с помощью Qt на примере исходников Qwt

Инструментарий
- Qt 5.3.1 for Windows 32-bit (MinGW 4.8.2, OpenGL, 735 MB)
- Qwt 6.1.0

Инструкция

- В меню Qt Creator'а выбираем "File" -> "New File or Project..."

- В разделе "Projects" выбираем "Libraries" -> во второй колонке выбираем "C++ Library", как показано на рисунке:



- Нажимаем кнопку "Choose"

- В поле "Type" выбираем "Statically Linked Library". В поле "Name" пишем: libqwtd. Указываем путь к проекту, в моём случае: "C:\Users\Ivan\Dropbox\Qt"

- Нажимаем кнопку "Next" до момента выбора модулей и ставим галочки: QtCore, QtGui, QtWidgets, QtOpenGL, QtPrintSupport и QtSvg. Далее - "Next"... - "Finish"

- У нас должен быть раcпакованный архив с исходниками Qwt. К примеру у меня здесь: C:\Qt\qwt-6.1.0\src

- Перейдём в файл "libqwtd.pro" и добавим в него строки:
Код
C++ (Qt)
INCLUDEPATH += "C:/Qt/qwt-6.1.0/src"
INCLUDEPATH += "C:/Qt/Qt5.3.1/5.3/Src/qtbase/src/concurrent/"
INCLUDEPATH += "C:/Qt/Qt5.3.1/5.3/Src/qtbase/include/QtCore/5.3.1/QtCore/"
 

- Нажимаем правой кнопкой по узлу нашего проекта, выбираем "Add Existing Files..." и добавляем в проект все файлы (.h и .cpp) из каталога "C:/Qt/qwt-6.1.0/src"

- По такому же принципу добавляем исходники из папок:
C:/Qt/Qt5.3.1/5.3/Src/qtbase/src/concurrent
C:/Qt/Qt5.3.1/5.3/Src/qtbase/include/QtCore/5.3.1/QtCore/private/

- Нажимаем кнопку "Build Project" на панели слева (или Ctrl+B)
« Последнее редактирование: Август 28, 2014, 08:10 от 8Observer8 » Записан
8Observer8
Гость
« Ответ #3 : Август 30, 2014, 08:23 »

Несколько слов в пользу QCustomPlot

1) Отличная инструкция по подключению и началу работы: http://www.qcustomplot.com/index.php/tutorials/settingup

2) Замечательная документация, которую легко встроить в Help: http://www.qcustomplot.com/index.php/support/documentation

3) Интуитивно понятная организация примеров. Открываем проект "plot-examples" и в файле "mainwindow.cpp" меняем аргумент в setupDemo():
Код
C++ (Qt)
 setupDemo(0);
 //setupPlayground(ui->customPlot);
 // 0:  setupQuadraticDemo(ui->customPlot);
 // 1:  setupSimpleDemo(ui->customPlot);
 // 2:  setupSincScatterDemo(ui->customPlot);
 // 3:  setupScatterStyleDemo(ui->customPlot);
 // 4:  setupScatterPixmapDemo(ui->customPlot);
 // 5:  setupLineStyleDemo(ui->customPlot);
 // 6:  setupDateDemo(ui->customPlot);
 // 7:  setupTextureBrushDemo(ui->customPlot);
 // 8:  setupMultiAxisDemo(ui->customPlot);
 // 9:  setupLogarithmicDemo(ui->customPlot);
 // 10: setupRealtimeDataDemo(ui->customPlot);
 // 11: setupParametricCurveDemo(ui->customPlot);
 // 12: setupBarChartDemo(ui->customPlot);
 // 13: setupStatisticalDemo(ui->customPlot);
 // 14: setupSimpleItemDemo(ui->customPlot);
 // 15: setupItemDemo(ui->customPlot);
 // 16: setupStyledDemo(ui->customPlot);
 // 17: setupAdvancedAxesDemo(ui->customPlot);
 // 18: setupColorMapDemo(ui->customPlot);
 

Запускаем и видим результат работы программы. Потом переходим в соответствующую функцию (в Creator'e есть навигация по функциям - выше редактора кода) и видим, как создавать график:

Код
C++ (Qt)
void MainWindow::setupQuadraticDemo(QCustomPlot *customPlot)
{
 demoName = "Quadratic Demo";
 // generate some data:
 QVector<double> x(101), y(101); // initialize with entries 0..100
 for (int i=0; i<101; ++i)
 {
   x[i] = i/50.0 - 1; // x goes from -1 to 1
   y[i] = x[i]*x[i];  // let's plot a quadratic function
 }
 // create graph and assign data to it:
 customPlot->addGraph();
 customPlot->graph(0)->setData(x, y);
 // give the axes some labels:
 customPlot->xAxis->setLabel("x");
 customPlot->yAxis->setLabel("y");
 // set axes ranges, so we see all data:
 customPlot->xAxis->setRange(-1, 1);
 customPlot->yAxis->setRange(0, 1);
}
« Последнее редактирование: Август 30, 2014, 08:30 от 8Observer8 » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.103 секунд. Запросов: 20.