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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
_Eldar_
44 / 29 / 3
Регистрация: 31.10.2009
Сообщений: 200
#1

error LNK2019 - C++

08.05.2010, 14:09. Просмотров 1342. Ответов 0
Метки нет (Все метки)

Привет всем, не могу понять из-за чего такая ошибка(( помогите разобраться, пример брал с учебника(практикум Павловской 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 не подключил, а просто открыл, т.е. не добавил в проект. Начал создавать занового проект и все заработало))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2010, 14:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос error LNK2019 (C++):

Error LNK1120, error LNK2019, error LNK2028, queue - C++
// свойство класса Parser queue&lt;elem*&gt;* postfix = new queue&lt;elem*&gt;; // строка, из-за которой происходит ошибка ...

Error LNK2019 и fatal error LNK1120 - C++
Копаюсь в гугле уже часа 2. Не понимаю, в чем проблема. Вроде нигде ошибок в коде нету, но выдает: 1&gt;------ Построение начато:...

Error LNK1120, Error LNK2019 - C++
Здравствуйте . У меня проблема с кодом . #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;fstream&gt; ...

Error LNK2019 - C++
Код программы : Source.cpp #include &lt;algorithm&gt; #include &lt;vector&gt; #include &lt;string&gt; #include &quot;read.h&quot; #include &quot;sortWord.h&quot; ...

Error LNK2019 - C++
Нашел на просторах сети код, постарался привести ее к рабочему виду и вот уже почти к завершению получил кучу таких еррор линков ...

error LNK2019 - C++
Всем доброго вечера! Вынужден снова воспользоваться помощью опытных мира сего, т.к. перерыв гору материала в сети, ничего путного не...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2010, 14:09
Привет! Вот еще темы с ответами:

error LNK2019 - C++
проблема вот в чем пишу некий проект, и никак не могу понять почему ошибка вот строка float median(std::vector&lt;float&gt; v); тут и...

error LNK2019 - C++
Здравствуйте, есть такое задание: 1. Создать классовые типы - численная квадратная матрица и одномерный массив динамического типа с...

error: LNK2019 - C++
shape.h #pragma once #include &quot;stdafx.h&quot; class Shape { ... };

Error LNK2019 - C++
Написал программу, а она выдаёт ошибку &quot;error LNK2019&quot; Вот код программы: #include &lt;iostream&gt; using namespace std; int n; int...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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