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

error LNK2019 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
_Eldar_
 Аватар для _Eldar_
44 / 29 / 3
Регистрация: 31.10.2009
Сообщений: 200
08.05.2010, 14:09     error LNK2019 #1
Привет всем, не могу понять из-за чего такая ошибка(( помогите разобраться, пример брал с учебника(практикум Павловской 2-я часть), работаю в VS 2005, помогите разобраться пожалуйста.Заранее благодарен.
вот код ошибки:
1>------ Build started: Project: Treygol, Configuration: Debug Win32 ------
1>Linking...
1>Main.obj : error LNK2019: unresolved external symbol "public: __thiscall Triangle::~Triangle(void)" (??1Triangle@@QAE@XZ) referenced in function _main
1>Main.obj : error LNK2019: unresolved external symbol "void __cdecl IsIncluded(class Triangle * * const,int)" (?IsIncluded@@YAXQAPAVTriangle@@H@Z) referenced in function _main
1>Main.obj : error LNK2019: unresolved external symbol "public: __thiscall Triangle::Triangle(class Point,class Point,class Point,char const *)" (??0Triangle@@QAE@VPoint@@00PBD@Z) referenced in function _main
1>Main.obj : error LNK2019: unresolved external symbol "public: void __thiscall Triangle::ShowSideAndArea(void)const " (?ShowSideAndArea@Triangle@@QBEXXZ) referenced in function "void __cdecl Show(class Triangle * * const,int)" (?Show@@YAXQAPAVTriangle@@H@Z)
1>Main.obj : error LNK2019: unresolved external symbol "public: void __thiscall Triangle::Show(void)const " (?Show@Triangle@@QBEXXZ) referenced in function "void __cdecl Show(class Triangle * * const,int)" (?Show@@YAXQAPAVTriangle@@H@Z)
1>D:\Cpp\lab\ОПП\Классы\Treygol\Debug\Treygol.exe : fatal error LNK1120: 5 unresolved externals
1>Build log was saved at "file://d:\Cpp\lab\ОПП\Классы\Treygol\Treygol\Debug\BuildLog.htm"
1>Treygol - 6 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
а вот файлы проекта:
Point.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef POINT_H
#define POINT_H
 
class Point{
public:
    //конструктор
    Point(double _x = 0, double _y = 0 ) :x(_x), y(_y) {}
    //Другие методы
    void Show() const;
public:
    double x, y;
};
#endif /*POINT_H*/
Point.cpp
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include "Point.h"
 
using namespace std;
 
void Point::Show() const{
    cout << " (" << x << ", " << y << ")";
}
Triangle.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef TRIANGLE_H
#define TRIANGLE_H
 
#include "Point.h"
 
class Triangle{
 
public: 
    Triangle(Point, Point, Point, const char*); // конструктор
    Triangle(const char*);// конструктор пустого (нулевого) треугольника
    ~Triangle();// деструктор
    Point Get_v1() const{return v1;}// Получить значение v1
    Point Get_v2() const{return v2;}// Получить значение v2
    Point Get_v3() const{return v3;}// Получить значение v3
    char* GetName() const {return name;} // Получить имя объекта
    void Show()const; // Показать объект
    void ShowSideAndArea() const;// Показать стороны и площадь объекта
 
public:
 
    static int count; //количество созданных объектов
 
private:
 
    char* objID; //идентификатор объекта
    char* name; //наименование треугольника
    Point v1, v2, v3; //вершины
    double a; //сторона, соединяющая vl и v2
    double b; //сторона, соединяющая v2 и v3
    double c; //сторона, соединяющая vl и v3
 
};
#endif /*TRIANGLE_H*/
Triangle.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <math.h>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <widows.h>
#include "Triangle.h"
 
using namespace std;
 
//конструктор
Triangle::Triangle (Point _v1, Point _v2, Point _v3, const char* ident)
: v1(_v1), v2(_v2), v3(_v3){
    char buf[16];
 
    objID = new char[strlen(ident) + 1];
    strcpy(objID, ident);
 
    count++;
 
    sprintf(buf, "Треугольник %d", count);
    name = new char[strlen(buf) + 1];
    strcpy(name, buf);
 
    a = sqrt((v1.x - v2.x) * (v1.x - v2.x) + (v1.y - v2.y) * (v1.y - v2.y));
    b = sqrt((v2.x - v3.x) * (v2.x - v3.x) + (v2.y - v3.y) * (v2.y - v3.y));
    с = sqrt((v1.x - v3.x) * (v1.x - v3.x) + (v1.y - v3.y) * (v1.y - v3.y));
 
    cout << "Конструктор_1 для: " << objID << "( " << name << " )" << endl;
}
 
// Конструктор пустого (нулевого) треугольника
Triangle::Triangle(const char* ident){
 
    char buf[16];
    objID = new char[strlen(ident) + 1];
    strcpy(objID, ident);
 
    count++;
    sprintf(buf, "Треугольник %d", count);
    name = new char[strlen(buf) + 1];
    strcpy(name, buf);
    a = b = c = 0;
    cout << "Конструктор_2 для" << objID << " ( " << name << " )" << endl;  
}
//Деструктор
Triangle::~Triangle(){
    cout << "Деструктор для: " << objID << endl;
    delete []objID;
    delete []name;
}
 
//Показать объект
void Triangle::Show() const{
    cout << name << ";";
    v1.Show(); v2.Show(); v3.Show();
    cout << endl;
}
// Показать стороны и площадь объекта
void Triangle::ShowSideAndArea()const{
    double p = (a + b + c) / 2;
    double s = sqrt(p * (p - a) * (p - b) * (p - c));
    cout << "----------------------------" << endl;
    cout << name << ";";
    cout.precision(4);
    cout << " a = " << setw(5) << a;
    cout << ". b = " << setw(5) << b;
    cout << ". c = " << setw(5) << c;
    cout << ";\ts = " << s << endl;
 
}
Main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// Main.cpp
#include <iostream>
#include "Triangle.h"
#include <windows.h>
#include <conio.h>
 
using namespace std;
 
int  Menu();
int  GetNumber(int, int);
void ExitBack();
void Show(Triangle* [], int);
void Move(Triangle* [], int);
void FindMax(Triangle* [], int);
void IsIncluded(Triangle* [], int);
 
// Инициализация глобальных переменных
int Triangle::count = 0;
// главная функция
int main() {
    
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
     //Определения точек
    Point p1(0, 0);   Point p2(0.5, 1);
    Point p3(1, 0);   Point p4(0, 4.5);
    Point p5(2, 1);   Point p6(2, 0);
    Point p7(2, 2);   Point p8(3, 0);
 
    // Определения треугольников
    Triangle triaA(p1, p2, p3, "triaA");
    Triangle triaB(p1, p4, p8, "triaB");
    Triangle triaC(p1, p5, p6, "triaC");
    Triangle triaD(p1, p7, p8, "triaD");
 
    // Определение массива указателей на треугольники
    Triangle* pTria[] = { &triaA, &triaB, &triaC, &triaD };
    int n = sizeof (pTria) / sizeof (pTria[0]);
 
    // Главный цикл
    bool done = false;
 
    while (!done) {
        switch (Menu()){
        case 1: Show(pTria, n); break;
        case 2: Move(pTria, n); break;
        case 3: FindMax(pTria, n); break;
        case 4: IsIncluded(pTria, n); break;
        case 5: cout << "Конец работы." << endl;
                done = true; break;
        }
    }
    _getch();
    return 0;
}
 
int Menu(){
 
    cout << "\n==================== Г л а в н о е   м е н ю ==================" << endl;
    cout << "1 - вывести все объекты\t - найти максимальный" << endl;
    cout << "2 - переместить\t\t 4 - определить отношения включения" << endl;
    cout << "\t\t     5 - выход" << endl;
 
    return GetNumber(1, 5);
    
}
 
// ввод целого числа в заданном диапазоне
int GetNumber(int min, int max) {
    int number = min - 1;
    while (true) {
        cin >> number;
        if ((number >= min) && (number <= max) && (cin.peek() == '\n'))
            break;
        else {
            cout << "Повторите ввод (ожидается число от " << min
                 << " до " << max << " ) ; " << endl;
        cin.clear();
        while (cin.get() != '\n') {};
        }
    }
    return number;
}
// возврат в функцию с основным меню
void ЕхitВаск() {
    cout << "Нажмите Enter." << endl;
    cin.get(); cin.get();
}
 
// вывод всех треугольников
void Show(Triangle* p_tria[], int k) {
    cout << "======= Перечень треугольников ========" << endl;
    int i;
    for (i = 0; i < k; ++i) p_tria[i]->Show();
    for (i = 0 ; i < k; ++i) p_tria[i]->ShowSideAndArea();
    ЕхitВаск();
}
 
// перемещение
void Move(Triangle* p_tria[], int k) {
    cout << "============= Перемещение =============" << endl;
    // здесь будет код функции...
    ЕхitВаск();
}
 
// поиск максимального треугольника
void FindMax(Triangle* p_tria[], int к) {
    cout << "=== Поиск максимального треугольника ==" << endl;
    // здесь будет код функции...
    ЕхitВаск();
}
// определение отношения включения
void Islncluded(Triangle* p_tria[], int к) {
    cout << "======== Отношение включения ==========" << endl;
    // здесь будет код функции...
    ЕхitВаск();
}
Добавлено через 1 час 4 минуты
Все тема закрыта, в коде все правильно, просто я файл Triangle.cpp не подключил, а просто открыл, т.е. не добавил в проект. Начал создавать занового проект и все заработало))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2010, 14:09     error LNK2019
Посмотрите здесь:

C++ error LNK2019
error: LNK2019 C++
C++ error LNK2019
C++ error LNK2019
C++ Ошибка error LNK2019:
C++ Error LNK2019
Error LNK2019 и LNK1120 C++
Error LNK2019: unresolved external symbol C++
Error LNK2019 C++
C++ Error LNK1120, Error LNK2019
C++ Error LNK2019: unresolved external symbol
C++ Error LNK2019 и fatal error LNK1120

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

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

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