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

LNK2019 и LNK1120 - C++

Восстановить пароль Регистрация
 
DraikoN
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 14
02.09.2012, 14:54     LNK2019 и LNK1120 #1
Программа состоит из 3ех файлов:
names.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef NAMES_H_
#define NAMES_H_
namespace SALES
{
    const int QUARTERS = 4;
    struct Sales
    {
        double sales[QUARTERS];
        double average;
        double max;
        double min;
    };
    void SetSales(Sales & s, const double ar[], int n);
    void SetSales(Sales & s);
    void ShowSales(const Sales & s);
}
void Clocks(void);
#endif
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
#include <iostream>
#include <Windows.h>
#include "names.h"
using namespace SALES;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::cout << "Неинтерактивная версия:\n\n";
    double arrMass[4] = {4.3, 2.1, 5.6, 1.7};
    Sales sSALE_A;
    SetSales(sSALE_A, arrMass, 4);
    ShowSales(sSALE_A);
 
    std::cout << "\n\nИнтерактивная версия:\n\n";
    Sales sSALE_B;
    SetSales(sSALE_B);
    ShowSales(sSALE_B);
 
    Clocks();
    std::cin.get();
    return 0;
}
и файла с функциями funcs.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
#include <iostream>
#include <ctime>
#include "names.h"
using namespace SALES;
 
void Clocks(void)
{
    float secs = 10;
    clock_t delay = secs * CLOCKS_PER_SEC;
    clock_t start = clock();
    while (clock() - start < delay);
}
void SetSales(Sales & s, const double ar[], int n)
{
    s.max = ar[0];
    s.min = ar[0];
    s.average = 0.0;
    for (int i = 0; i < n; i++)
    {
        s.sales[i] = ar[i];
        if (s.sales[i] >= s.max)
            s.max = s.sales[i];
        if (s.sales[i] <= s.min)
            s.min = s.sales[i];
        s.average += s.sales[i];
    }   
    s.average = s.average / n;      //забивает нулями элементы если пусты (индийская версия)
    if (n != 4)
    {
        s.sales[3] = 0;
        if (n != 3)
            s.sales[2] = 0;
        if (n != 2 && n != 3)
            s.sales[1] = 0;
    }
    //for (int i = 4; i >= n; i--)   //забивает нулями элементы если они пусты.
    //  if (n != i+1)
    //      s.sales[i] = 0;
}
void SetSales(Sales & s)
{
    s.max = s.min = s.average = 0.0;
    double temp;
    int count = 0;
    std::cout << "Вводите продажи (для выхода введите 0.001):\n";
    for (int i = 0; i < 4; i++)
    {
        std::cout << "Введите продажи за " << i+1 << " квартал: ";
        std::cin >> temp;
        if (temp == 0.001)
            break;
        count = i-1;
        s.sales[i] = temp;
        if (s.sales[i] >= s.max)
            s.max = s.sales[i];
        if (s.sales[i] <= s.min)
            s.min = s.sales[i];
        s.average += s.sales[i];
    }   
    s.average = s.average / count;
}
void ShowSales(const Sales & s)
{
    std::cout << "Элементы массива: \n";
    for (int i = 0; i < 4; i++)
        std::cout << "\t" << i+1;
    std::cout << std::endl;
    for (int i = 0; i < 4; i++)
        std::cout << "\t" << s.sales[i];
    std::cout << "\nСреднее значение = " << s.average
              << "\nМаксимальное значение = " << s.max
              << "\nМинимальное значение = " << s.min << std::endl;
    
}
Все это безобразие выдает ошибки:

1>------ Построение начато: проект: Exersize9.4, Конфигурация: Debug Win32 ------
1>Построение начато 02.09.2012 13:41:34.
1>InitializeBuildStatus:
1> Обращение к "Debug\Exersize9.4.unsuccessfulbuild".
1>ClCompile:
1> main.cpp
1>ManifestResourceCompile:
1> Для всех выходных данных обновления не требуется.
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl SALES::SetSales(struct SALES::Sales &)" (?SetSales@SALES@@YAXAAUSales@1@@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl SALES::ShowSales(struct SALES::Sales const &)" (?ShowSales@SALES@@YAXABUSales@1@@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl SALES::SetSales(struct SALES::Sales &,double const * const,int)" (?SetSales@SALES@@YAXAAUSales@1@QBNH@Z) в функции _main
1>D:\+PROJECTS+\Visual Studio\Exersize9.4\Debug\Exersize9.4.exe : fatal error LNK1120: 3 неразрешенных внешних элементов
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:01.40
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Полазил по интернетам - везде написано, что проблема в области видимости и что то тп.
С моей точки зрения - все ОК, вроде все должно друг друга "видеть"
Может main.cpp не видит funcs.cpppp ?

Жду помощи, всем заранее спасибо)

PS я изучаю С++ только второй месяц, и еще толком не научился читать ошибки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2012, 14:54     LNK2019 и LNK1120
Посмотрите здесь:

C++ LNK1120
C++ Ошибка LNK1120
Error LNK2019 и LNK1120 C++
LNK2019 and LNK1120 C++
Ошибка error LNK2019 & LNK1120 и md5() C++
C++ C++ - Error LNK1120,Error LNK2019
Error LNK2028, LNK2019, LNK1120: 2 неразрешенных внешних элементов C++
C++ Error LNK1120, error LNK2019, error LNK2028, queue

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
02.09.2012, 16:36     LNK2019 и LNK1120 #2
Все функции в funcs.cpp должны быть обернуты в namespace SALES.
DraikoN
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 14
02.09.2012, 16:59  [ТС]     LNK2019 и LNK1120 #3
Зашел сюда, чтобы написать, что разобрался XD
Но все равно спасибо тебе, добрый человек
Я сначала переписал программу в один файл, чтобы понять, что кто использует и что кому не хватает - и догнал, что именно пространство имен я и забыл в файл с функциями дописать.
Так же нашел проблему, что функция не считает среднее значение, не считает минимум и тп мелочи.
Yandex
Объявления
02.09.2012, 16:59     LNK2019 и LNK1120
Ответ Создать тему
Опции темы

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