c++ - undefined reference to
Проблема в заголовочном файле graphics.h. Среда - Dev-C++. Хедер и соответствующую библиотеку устанавливал по гайду (https://youtu.be/XgPFAC7ixT4). Копмилятор почему-то не видит функции из хедера, то есть выдаёт ошибки типа undefined reference to `closegraph'
#include <iostream>
#include <cmath>
#include <stdlib.h>
#include "graphics.h"
using namespace std;
const double
XL=-10.0, XR=10.0; // ????? ? ?????? ???????
const int
GetMaxX=1800, GetMaxY=1000; // ??????? ???????????? ????
int
tXMax, // ????? ????? ?????? ?? ???????????
tYMax, // ????? ????? ?????? ?? ?????????
OcX, // ???????????? ?????????? (Y) ??? ?
OcY; // ?????????????? ?????????? ??? Y
double
YMax, // ???????????? ???????? ??????? F1
YMin, // ??????????? ???????? ??????? F1
AbsYMin, // ??????????? ???????? ?????? ???????
Mx, // ??????? ?? ??? ?
My; // ??????? ?? ??? Y
// ?????????? ??? ?????? ????? ??????????? ???????
int YRoot = 10, XRoot;
void Check_XL_XR(); // ???????? ?????? ??????? ??? X
void InitGr(); // ????????????? ???????????? ??????
double F1(double x);// ??????? F1
double F2(double x);// ??????? F2
void F1_Max_Min(); // ????? ???????? ??????? F1:
// ????????????, ?????????????, ???????? ? ????
void ShowFunc1(); // ?????? ??????? F1
void ShowFunc2(); // ?????? ??????? F2
// void ShowOcX(); // ????????? ??? ?, ????????, ?????????
// void ShowOcY(); // ????????? ???????????? ???, ????????, ?????????
int main()
{
Check_XL_XR; // ????? ??????? < ?????? ????????
InitGr(); // ????????????? ??????? ? ??????????
// ??????? ?? ??? ? = ???????? ????????? ?? ??????
Mx = (XR-XL)/(tXMax-10);
F1_Max_Min(); // ???????? ????????? ??????? F1
// My - ??????? ?? ??? Y =
// ????? ????? ?? ????????? ???????? ???????
My =(tYMax-10)/(YMax-YMin);
ShowFunc1(); // ????????? ??????? F1
// ShowOcX(); // ????????? ??? ?
// ShowOcY(); // ????????? ??? Y
ShowFunc2(); // ????????? ??????? F2
cin.get(); // ????????????? ??? ?????????
closegraph(); // ??????? ???? ? ????????
return 0;
}
// ????????????? ???????????? ??????
void InitGr() {
initwindow(GetMaxX,GetMaxY); // ??????? ???? ??? ???????
// ???????? 400 ?? 300 ????????
/*
// 2? ?????? ??????????? ???????
// ??????????? ??????? ? ?????
int gd = DETECT, // ???????????????
gm;
initgraph(&gd, &gm, "C:\\TC\\BGI");
*/
tXMax = GetMaxX; // ????????? ??????? ??????
tYMax = GetMaxY;
rectangle(0,0,tXMax,tYMax); // ????? ???? ???????
XRoot=tXMax-100;
setcolor(14); // ??????? ? ???? ????????: 14 == Yellow
outtextxy(20, 10, "F1=x*Sin(x)");
setcolor(10); // 10 == LightGreen
outtextxy(20, 30, "F2=x*0.2+1+Sin(x)*Cos(x)");
setcolor(15); // 15 == White
} // InitGr
// ??????? ??????? F1 ? F2
double F1(double x) {
return x*sin(x);
} // F1
double F2(double x) {
return x*0.2+1+sin(x)*cos(x);
} // F2
// ???????? ????????? ??? ?
void Check_XL_XR() {
if (XL >= XR) {
cout << "???????? ??????? ?? ?: "
<< XL << ">=" << XR << " ?";
cin.get();
exit(1); // ???????? ?????????
}
} // Check_XL_XR
/* ????? ???????? ??????? F1:
????????????, ?????????????, ???????? ? ????*/
void F1_Max_Min() {
int t; // ?????, ????? ???????? ?????????
double X,Y; // ???????? ????????? ? ???????
YMax = F1(XL); YMin = YMax;
AbsYMin = abs(YMax);
// ?????????? ??? ?????? ???????? ??? ?????
for (t = 0; t<= tXMax-10; t++) {
// ???????? ?????? ??????????? ? ????????
X = t*Mx+XL;
Y = F1(X); // ???????? ???????
if (Y > YMax) YMax=Y;
if (Y < YMin) YMin=Y;
// ??? ??????????? ??????? ??? ?
if (abs(Y)<AbsYMin) AbsYMin=abs(Y);
}
} // F1_Max_Min
/* ????????? ??????? ??????? F1 ?
??????????? ??????? ???? ????????? */
void ShowFunc1() {
int tX, tY; // ??????????? ??????????
double X,Y;
// ?? ???? ?????? ??????????? ??? X
for (tX=5; tX<=tXMax-5; tX++) {
X = (tX-5)*Mx+XL; // ???????? ???????
Y = F1(X); // ???????? ???????
// ???????????? ?????????? ?? ???????? ???????
tY = (tYMax-5) - (My*(Y-YMin));
putpixel(tX,tY,14); // ??????? ??????? F1
setcolor(15);
//circle(tX,tY,1);
};
} // ShowFunc1
// ????? ????????? ? ???????? ???????
// void Out_X_Y(double X, double Y) {
// char S1[10]="X=", S2[7]="";
// setcolor(15);
// DoubleToStr(X, S2, 2); // ??????? ???????? ?????????
// strcat(S1, S2);
// outtextxy(XRoot,YRoot,S1); // ????????
// YRoot = YRoot+15; // ??? ???????? ???????
// strcpy(S1, "F="); // ??????? ???????? ???????
// DoubleToStr(Y, S2, 2); // ???????? ???????
// strcat(S1, S2);
// outtextxy(XRoot, YRoot, S1);
// YRoot = YRoot+17; // ??? ?????????? ???????????
// } // Out_X_Y
// ????????? ??????? ??????? F2
void ShowFunc2() {
int tX, tY; // ??????????? ??????????
double X, Y;
// ?? ?????? ??????????? ??? ?
for (tX = 5; tX <= tXMax-5; tX++) {
X = (tX-5)*Mx+XL; // ???????? ???????
Y = F2(X);
tY = (tYMax-5) - (My*(Y-YMin));
// ??? ????? ??????????? ??????? F1?
if (getpixel(tX,tY) == 14) // Yellow
// Out_X_Y(X,Y); // ??, ??????? ????????
// ??????? ??????? ??????? F2 ??????? ??????
putpixel(tX,tY,10); // LightGreen
}
} // ShowFunc2
// ????????? ??? ?, ????????, ?????????
// void ShowOcX() {
// double X, dX; // ??? ????????? - ?????? ?
// int tX; // ??????? ????????
// char S[10] = ""; // ??? ?????? ???????? ?? ?????
// // ????? ??????? (???? ???????) ??? ?
// OcX = (tYMax-5) - (My*(AbsYMin-YMin));
// // if (abs(Y) <= AbsYMin)
// // OcX = tY;
// if ((OcX<6) or (OcX>tYMax-6))
// OcX = tYMax-5; // ???? ??????? ??? ??????
// line(5, OcX, tXMax-5, OcX); // ????? ??? ?
// outtextxy(tXMax-20, OcX-7, ">"); // ???????
// outtextxy(tXMax-20, OcX+5, "X"); // ??????????? ???
// dX = (XR-XL)/15; // ??? ????????? ?? ??? ?
// X = XL; // ????? ??????? ?? ??????
// while (X < XR-dX/2) {
// tX = (X-XL)/Mx+5; // ???????
// line(tX, OcX-4, tX, OcX+4); // ????????
// DoubleToStr(X, S, 1);
// outtextxy(tX-10, OcX+17, S); // ?????????
// X = X + dX; // ????????? ????????
// }
// } // ShowOcX