В общем, создал заголовочный и .cpp файлы. Подключил к проекту. В заголовочном указал прототип функции, в .cpp сама его реализация. Включил заголовочный файл в mainwindow.cpp, потом начал применять реализацию функции. И соответственно Qt выдаёт ошибку о том, что функция не распознана, хотя она появляется в подсказках. В чём может быть проблема? Ниже приведу код четырёх файлов: .pro, заголовочного и исполнительно файлов реализуемой функции и самого mainwindow.cpp. Проблема касается всех функций в модуле, их всего две. Эти функции в jd.h/jd.cpp. Так же приложу скрин с ошибкой.
.pro:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = GPC
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp \
mainwindow.cpp \
extra_math.cpp \
gcs.cpp \
jd.cpp
HEADERS += \
mainwindow.h \
extra_math.h \
gcs.h \
consts.h \
jd.h
FORMS += \
mainwindow.ui
jd.h:
#ifndef JD_H
#define JD_H
#include "QDateTime"
double UTCtoJD(QDateTime UTC);
QDateTime JDtoUTC(double JD);
#endif // JD_H
jd.cpp:
#include "jd.h"
#include "math.h"
#include "QDateTime"
double UTCtoJD(QDateTime UTC)
{
QDate DATE = UTC.date();
int DAY = DATE.day();
int MONTH = DATE.month();
int YEAR = DATE.year();
QTime TIME = UTC.time();
int HOUR = TIME.hour();
int MINUTE = TIME.minute();
int SECOND = TIME.second();
int MSECOND = TIME.msec();
double a = floor( (14 - MONTH)/12 );
double y = YEAR + 4800 - a;
double m = MONTH + 12*a - 3;
double JDN = DAY + floor( (153*m +2)/5 ) + 365*y + floor(y/4)
- floor(y/100) + floor(y/400) - 32045 ;
double JD = JDN - 0.5 + (HOUR*3600 + MINUTE*60 + SECOND + float(MSECOND)*1E-3)/86400;
return JD;
}
QDateTime JDtoUTC(double JD)
{
double JDN = floor(JD + 0.5);
double a = JDN + 32044;
double b = floor( (4*a + 3)/146097 );
double c = a - floor( 146097*b/4 );
double d = floor( (4*c+3)/1461 );
double e = c - floor( 1461*d/4 );
double m = floor( (5*e+2)/153 );
int DAY = e - floor( (153*m+2)/5 ) + 1;
int MONTH = m + 3 - 12*floor(m/10);
int YEAR = 100*b + d - 4800 + floor(m/10);
QDate DATE(YEAR, MONTH, DAY);
double msec = round(((JD+0.5) - floor(JD+0.5))*864E5);
int HOUR = floor(msec/36E5);
int MINUTE = floor((msec-HOUR*36E5)/6E4);
int SECOND = floor((msec - HOUR*36E5 - MINUTE*6E4)/1E3);
int MSECOND = msec - HOUR*36E5 - MINUTE*6E4 - SECOND*1E3;
QTime TIME(HOUR, MINUTE, SECOND, MSECOND);
QDateTime OUT(DATE, TIME);
return OUT;
}
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QString"
#include "QDateTime"
#include "consts.h"
#include "gcs.h"
#include "jd.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
double RV[6] = {-6222.33369793414, 3251.49320190604, 533.308676242984, 0.992887228367863, 0.678519276136813, 7.42901079418331};
double rot_par[4] = {37, 0.48482, 0, 0};
QString DATE = "24/03/2017 00:00:00.000";
QString FORM = "dd/MM/yyyy hh:mm:ss.zzz";
QDateTime UTC = QDateTime::fromString(DATE, FORM);
QDateTime UTC2 = JDtoUTC(2458223.0525463);
}
Лог сборки:
22:55:07: Running steps for project GPC...
22:55:07: Configuration unchanged, skipping qmake step.
22:55:07: Starting: "C:\Qt\Qt5.10.1\Tools\mingw530_32\bin\mingw32-make.exe"
C:/Qt/Qt5.10.1/Tools/mingw530_32/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'C:/Qt Projects/build-GPC-Desktop_Qt_5_10_1_MinGW_32bit-Debug'
g++ -Wl,-subsystem,windows -mthreads -o debug\GPC.exe debug/main.o debug/mainwindow.o debug/extra_math.o debug/gcs.o debug/moc_mainwindow.o -lmingw32 -LC:\Qt\Qt5.10.1\5.10.1\mingw53_32\lib C:\Qt\Qt5.10.1\5.10.1\mingw53_32\lib\libqtmaind.a -LC:\utils\my_sql\my_sql\lib -LC:\utils\postgresql\pgsql\lib -lshell32 C:\Qt\Qt5.10.1\5.10.1\mingw53_32\lib\libQt5Widgetsd.a C:\Qt\Qt5.10.1\5.10.1\mingw53_32\lib\libQt5Guid.a C:\Qt\Qt5.10.1\5.10.1\mingw53_32\lib\libQt5Cored.a
debug/mainwindow.o: In function `ZN10MainWindow21on_pushButton_clickedEv':
C:\Qt Projects\build-GPC-Desktop_Qt_5_10_1_MinGW_32bit-Debug/../GPC/mainwindow.cpp:34: undefined reference to `JDtoUTC(double)'
collect2.exe: error: ld returned 1 exit status
Makefile.Debug:77: recipe for target 'debug\GPC.exe' failed
mingw32-make[1]: Leaving directory 'C:/Qt Projects/build-GPC-Desktop_Qt_5_10_1_MinGW_32bit-Debug'
Makefile:36: recipe for target 'debug' failed
mingw32-make[1]: *** [debug\GPC.exe] Error 1
mingw32-make: *** [debug] Error 2
22:55:08: The process "C:\Qt\Qt5.10.1\Tools\mingw530_32\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project GPC (kit: Desktop Qt 5.10.1 MinGW 32bit)
When executing step "Make"
22:55:08: Elapsed time: 00:01.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Вечер добрый! Есть двумерный массив, в котором содержится n-ое количество строкКаждая строка представляет собой последовательность нулей...
Вопрос в шапке (C++, Visual Studio 17, Console Application) Сейчас понаедут знатоки которое напишут 2-3 слова "в кратце" но мне нужно ПОДРОБНОСпасибо