Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 01.07.2021
Сообщений: 13

Ошибка LNK2019

01.07.2021, 18:43. Показов 915. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Программа несложная, но имеет 7 исходных файлов. Выдавая ошибку, компилятор не сообщает, в каком именно файле и на какой строке он столкнулся с проблемой. Уже вторые сутки пытаюсь запустить проект...
  • Проект консольный
  • Реализация конструкторов и деструкторов присутствует
  • Все исходные файлы подключены к проекту

Class_Inheritance.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
#include "Шахматная_фигура.h"
#include "Ладья.h"
#include "Слон.h"
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    
    string type;
    cout << "Введите тип фигуры (ладья или слон): ";
    cin >> type;
 
    if (type == "ладья")
    {
        Ладья Rook; // Создаём переменную Rook из дочернего класса Ладья
        Rook.name = Ладья::rook; // В дальнейшем обращаемся к полям и методам базового класса Шахматная_фигура
        Rook.weight = 5; // Вес ладьи равен 5 (по шахматным стандартам)
        if (Rook.isStrong()) cout << "Это сильная фигура. Её вес равен " << Rook.weight << endl;
        if (Rook.type_of_move() == Ладья::horizontal) cout << "Она ходит по горизонтали\n";
        cout << "Введите клетку, на которой стоит ладья (в формате №строки_пробел_№столбца): ";
        cin >> Rook.position[1];
        cin >> Rook.position[2];
        cout << "Количество свободных клеток сверху и справа равно " << Rook.free_squares();
    }
 
    if (type == "слон")
    {
        Слон Bishop; // Создаём переменную Bishop из дочернего класса Слон
        Bishop.name = Слон::bishop; // В дальнейшем обращаемся к полям и методам базового класса Шахматная_фигура
        Bishop.weight = 3; // Вес слона равен 3 (по шахматным стандартам)
        if (!Bishop.isStrong()) cout << "Это слабая фигура. Её вес равен " << Bishop.weight << endl;
        if (Bishop.type_of_move() == Слон::diagonal) cout << "Она ходит по диагонали\n";
        cout << "Введите клетку, на которой стоит слон (в формате №строки_пробел_№столбца): ";
        cin >> Bishop.position[1];
        cin >> Bishop.position[2];
        if (Bishop.what_color() == Слон::white)
            cout << "Это белопольный слон\n";
        if (Bishop.what_color() == Слон::black)
            cout << "Это чернопольный слон";
        cout << "Количество свободных клеток для хода равно " << Bishop.free_squares();
    }
    system("pause");
    return 0;
}
Шахматная_фигура.h (базовый класс)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma once
class Шахматная_фигура
{
public:
    enum figures {bishop, rook}; // Перечисление, в котором объявляется тип фигуры
    figures name;
    int weight; // Вес фигуры
    int position[2]; // Позиция фигуры (1-я цифра — номер буквы от a до h)
 
    Шахматная_фигура(); // Конструктор
    ~Шахматная_фигура(); // Деструктор
    bool isStrong(); // Сильна ли фигура
    enum moves { horizontal, diagonal };
    moves type_of_move(); // Как ходит фигура
};
Шахматная_фигура.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
#include "Шахматная_фигура.h"
#include <iostream>
 
Шахматная_фигура::Шахматная_фигура()
{
    name = bishop;
    weight = 0;
    position[1] = 1;
    position[2] = 1;
}
 
Шахматная_фигура::~Шахматная_фигура()
{
}
 
// Сильна ли фигура
bool Шахматная_фигура::isStrong()
{
    return weight >= 5;
}
 
// Как ходит фигура
Шахматная_фигура::moves Шахматная_фигура::type_of_move()
{
    if (name == rook)
        return horizontal;
    if (name == bishop)
        return diagonal;
}
Ладья.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
#include "Шахматная_фигура.h"
 
class Ладья :
    public Шахматная_фигура
{
public:
    int position[2];
    Ладья(); // Конструктор
    ~Ладья(); // Деструктор
    int free_squares(); // Количество свободных клеток впереди и справа
};
Ладья.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
#include "Ладья.h"
#include "Шахматная_фигура.h"
#include <iostream>
 
Ладья::Ладья()
{
    Шахматная_фигура();
}
 
Ладья::~Ладья()
{
}
 
// Количество свободных клеток впереди и справа
int Ладья::free_squares()
{
    int sq = 0; // Счётчик клеток
    if (type_of_move() == horizontal) // Если ходит по горизонтали
    {
        for (int i = position[1]; i < 8; i++) // Считаем отдельно строки и столбцы
            sq++;
        for (int i = position[2]; i < 8; i++)
            sq++;
    }
    return sq;
}
Слон.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include "Шахматная_фигура.h"
 
class Слон :
    public Шахматная_фигура
{
public:
    enum bishop_color { white, black }; // Белопольный или чернопольный слон
 
    Слон(); // Конструктор
    ~Слон(); // Деструктор
    int free_squares(); // Количество свободных клеток для хода
    bishop_color what_color();
};
Слон.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
#include "Слон.h"
#include "Шахматная_фигура.h"
#include <iostream>
 
Слон::Слон()
{
    Шахматная_фигура();
}
 
Слон::~Слон()
{
}
 
// Какого цвета слон
Слон::bishop_color Слон::what_color()
{
    if ((position[1] + position[2]) % 2 == 0) // Если сумма строки и столбца чётна
        return black;
    else
        return white;
}
 
// Количество свободных клеток
int Слон::free_squares()
{
    int sq = 0; // Счётчик клеток
    if (type_of_move() == diagonal)
    {
        for (int i = position[1], j = position[2]; i < 8 && j < 8; i++, j++)
            sq++;
        for (int i = position[1], j = position[2]; i < 8 && j > 1; i++, j--)
            sq++;
        for (int i = position[1], j = position[2]; i > 1 && j < 8; i--, j++)
            sq++;
        for (int i = position[1], j = position[2]; i > 1 && j > 1; i--, j--)
            sq++;
    }
    return sq;
}

Ошибка LNK2019 ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ).
..\C++\Class_Inheritance\Class_Inheritan ce\MSVCRTD.lib(exe_main.obj) 1
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.07.2021, 18:43
Ответы с готовыми решениями:

Ошибка 2 error LNK2019, не пойму в чем ошибка
Выдает такую ошибку: Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ &quot;int __cdecl game(void)&quot; (?game@@YAHXZ) в...

Ошибка LNK2019
Пишу небольшую базу данных (в учебных целях поэтому нигде не сохраняю) и при добавлении всех функций и структур в библиотеку, при их...

Ошибка LNK2019
Здравствуйте, уважаемые программисты! Обращаюсь к Вам потому, что в моей первой программе с классами вылетает ошибка линковки, а что с...

9
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
01.07.2021, 18:56
Попробуйте правильно поставить подключаемые файлы
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
//#include "Шахматная_фигура.h"
#include "Ладья.h"
#include "Слон.h"
 
 
using namespace std;
 
int main()
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12932 / 6800 / 1820
Регистрация: 18.10.2014
Сообщений: 17,211
01.07.2021, 19:12
Цитата Сообщение от Astrogrammer Посмотреть сообщение
все исходные файлы подключены к проекту
Точно?

Сделайте компиляцию начистовую и покажите, что вам пишет окно output. Файл Class_Inheritance.cpp действительно компилируется?

---

Что это за странный конструктор?

C++
1
2
3
4
Ладья::Ладья()
{
    Шахматная_фигура();
}
Что должна делить строчка Шахматная_фигура();?

Распространенные ошибки
0
0 / 0 / 0
Регистрация: 01.07.2021
Сообщений: 13
01.07.2021, 20:49  [ТС]
Цитата Сообщение от zss Посмотреть сообщение
Попробуйте правильно поставить подключаемые файлы
Всё поставил как надо, не помогло.

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Сделайте компиляцию начистовую и покажите, что вам пишет окно output.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Сборка начата…
1>------ Сборка начата: проект: Class_Inheritance, Конфигурация: Debug Win32 ------
1>Class_Inheritance.cpp
1>..\C++\Class_Inheritance\Class_Inheritance\Class_Inheritance.cpp(1,1): warning C4335: Обнаружен файл в формате Mac: преобразуйте исходный файл в формат DOS или UNIX
1>..\C++\Class_Inheritance\Class_Inheritance\Class_Inheritance.cpp(1,529): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
1>Ладья.cpp
1>Слон.cpp
1>Шахматная_фигура.cpp
1>Создание кода...
1>..\C++\Class_Inheritance\Class_Inheritance\Шахматная_фигура.cpp(29): warning C4715: Шахматная_фигура::type_of_move: значение возвращается не при всех путях выполнения
1>MSVCRTD.lib(exe_main.obj) : error LNK2019: ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ).
1>..\C++\Class_Inheritance\Debug\Class_Inheritance.exe : fatal error LNK1120: неразрешенных внешних элементов: 1
1>Сборка проекта "Class_Inheritance.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Что должна делить строчка Шахматная_фигура();?
Вызов метода-конструктора из базового класса в конструкторе дочернего класса я взял из учебного примера программы. Предполагаю, что это нужно для инициализации полей обоих классов (ибо поля базового класса вызываются и в дочернем). Впрочем, и без записи этой функции программа компилироваться не желает.
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
01.07.2021, 20:52
Цитата Сообщение от Astrogrammer Посмотреть сообщение
Вызов метода-конструктора из базового класса
Это пишется не так
C++
1
Ладья::Ладья():Шахматная_фигура(){}
Цитата Сообщение от Astrogrammer Посмотреть сообщение
Обнаружен файл в формате Mac: преобразуйте исходный файл в формат DOS или UNIX
Ну так, ПРЕОБРАЗУЙТЕ!
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,858
01.07.2021, 20:58
Цитата Сообщение от Astrogrammer Посмотреть сообщение
ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)"
не виндовый ли проект ты создал?
0
0 / 0 / 0
Регистрация: 01.07.2021
Сообщений: 13
01.07.2021, 21:04  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
не виндовый ли проект ты создал?
Проверил, проект консольный.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12932 / 6800 / 1820
Регистрация: 18.10.2014
Сообщений: 17,211
01.07.2021, 21:08
Цитата Сообщение от Astrogrammer Посмотреть сообщение
Code
1
2
1>------ Сборка начата: проект: Class_Inheritance, Конфигурация: Debug Win32 ------
1>Class_Inheritance.cpp
Остается только предположить, что тот Class_Inheritance.cpp, который вы нам показываете - это не тот Class_Inheritance.cpp, который фактически компилируется.
0
0 / 0 / 0
Регистрация: 01.07.2021
Сообщений: 13
01.07.2021, 21:37  [ТС]
Пересоздал проект, заново ввёл все данные и программа заработала сама собой. Всех благодарю за помощь!
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
02.07.2021, 09:36
Я все же ратую за то, что надо сначала изменить кодировку файла на Windows 1251,
а потом делать выводы о том,что компилируется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.07.2021, 09:36
Помогаю со студенческими работами здесь

Ошибка LNK2019
Создается библиотека D:\EWIL\EWIL(Old)\EWIL\scr\map editor\Debug\Map Editor.lib и объект D:\EWIL\EWIL(Old)\EWIL\scr\map editor\Debug\Map...

Ошибка LNK2019
Помогите разобраться с этой ошибкой. В программировании я еще новичок, поэтому не все пока понимаю. Задача состоит в том что надо...

Ошибка LNK2019
Я только знакомлюсь с c++. Помогите пожалуйста разобраться. Есть такой класс: #pragma once template &lt;class Type&gt; class...

Ошибка LNK2019
Дописала код программы. Из ошибок выдает только вот ЭТО вот: &quot;Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ...

Ошибка LNK2019
Добрый день. Недавно начала изучать С++ (необходимо для научной деятельности). Программирую я в Visual Studio 2010 Express Напечатал я...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru