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

Ошибка LNK2019 - C++

Восстановить пароль Регистрация
 
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
25.11.2013, 20:46     Ошибка LNK2019 #1
Здравствуйте!
При компиляции выдает ошибки, помогите пожалуйста растолковать, на вид код вроде бы понятный и правильный, не могу понять, в чем проблема. Задача во вложениях.

d:\dropbox\pascal\c++\проект2\проект2\исходный код2.cpp(19): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 11.0\vc\include\string.h(110): см. объявление "strcpy"
1> Создание кода...
1>Исходный код.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl showgolf(struct golf const &)" (?showgolf@@YAXABUgolf@@@Z) в функции _main
1>D:\Dropbox\Pascal\C++\Проект2\Debug\Проект2.exe : fatal error LNK1120: неразрешенных внешних элементов: 1


3 файла:

заголовочный (header.h):
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
const int LEN = 40;
 
struct golf
{
    char fullname[LEN];
    int score; // поставил score (счет) вместо гандикапа, что бы было понятней
};
 
void setgolf (golf & g, const char * name, int score);
int setgolf (golf & g);
void score (golf & g, int);
void showgolf (const golf & g);


файл с определениями функций:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <Windows.h>
#include <string>
#include "header.h"
 
void setgolf (golf & g, const char * name, int score)
{
    strcpy(g.fullname,name);
    g.score = score;
}
 
int setgolf (golf & g)
{
        std::cout << "Введите имя гольфиста: ";
        std::cin >> g.fullname;
        if (g.fullname[0] = '\n') return 0;
        std::cout << "Введите его счет: ";
        std::cin >> g.score;
        return 1;
}
 
void score (golf & g, int score)
{
    g.score = score;
}
 
void showgolf (golf & g)
{
    std::cout << "Имя гольфиста: " <<  g.fullname << '\n';
    std::cout << "Счет гольфиста: " << g.score << '\n';
}


файл 2:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <Windows.h>
#include <string>
#include "header.h"
 
#define rus setlocale(0,"rus");SetConsoleCP(1251);SetConsoleOutputCP(1251);
 
using std::cout; using std::cin; using std::endl;
 
int main()
{
    rus;
    golf arr[2];
    for (int i = 0; i < 3; i++)
    {
        if (setgolf(arr[i]) == 0) // проверка интерактивной функции (с запросом на ввод)
            break;
    }   
    //-------------------------------------
    cout << "Прогонка 1"; // первая прогонка, проверка совпадают ли введенные данные
    for (int i = 0; i < 3; i++)
    {
        cout << "Гольфист " << i << endl;
        showgolf(arr[i]);
        cout << endl;
    }   
    //-------------------------------------
    
    setgolf(arr[0], "abc cba", 312);  // проверка функции с ручным заполнением структуры
    
    //-------------------------------------
    cout << "Прогонка 2"; // вторая прогонка, должна измениться структура arr[0]
    for (int i = 0; i < 3; i++)
    {
        cout << "Гольфист " << i << endl;
        showgolf(arr[i]);
        cout << endl;
    }
    //-------------------------------------
    
    score(arr[0], 0); // функция, которая изменяет счет
    
    //-------------------------------------
    cout << "Прогонка 2"; // прогонка 3, должен изменится счет у структуры arr[0]
    for (int i = 0; i < 3; i++)
    {
        cout << "Гольфист " << i << endl;
        showgolf(arr[i]);
        cout << endl;
    }
    //--------------------------------
    system("pause");
    return 0;
}
Миниатюры
Ошибка LNK2019  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2013, 20:46     Ошибка LNK2019
Посмотрите здесь:

C++ Ошибка LNK2019
Ошибка LNK2019 C++
C++ Ошибка LNK2019
Ошибка LNK2019 C++
Ошибка LNK2019 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
25.11.2013, 20:50     Ошибка LNK2019 #2
ф-я объявлена как
C++
1
void showgolf (const golf & g);
а определена как
C++
1
void showgolf (golf & g)
вот и ошибка компоновки
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
25.11.2013, 21:58  [ТС]     Ошибка LNK2019 #3
Цитата Сообщение от retmas Посмотреть сообщение
ф-я объявлена как
C++
1
void showgolf (const golf & g);
а определена как
C++
1
void showgolf (golf & g)
вот и ошибка компоновки
Теперь после ввода имени программа зависает, и visual studio пишет вот такое:
Миниатюры
Ошибка LNK2019  
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
25.11.2013, 22:34     Ошибка LNK2019 #4
не вникал в код, но в циклах выход за пределы массива:
C++
1
golf arr[2];
Yandex
Объявления
25.11.2013, 22:34     Ошибка LNK2019
Ответ Создать тему
Опции темы

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