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

Неразрешенный внешний символ - C++

Восстановить пароль Регистрация
 
Kreativ
2 / 2 / 0
Регистрация: 22.09.2012
Сообщений: 202
18.12.2012, 15:31     Неразрешенный внешний символ #1
Привет всем, помогите исправить ошибку: Ошибка 1 error LNK2001: неразрешенный внешний символ ""struct kadry * array" (?array@@3PAUkadry@@A)" c:\my documents\visual studio 2012\Projects\Lab\Lab\L11-1.obj Lab
Проект состоит из Lab.CPP - содержит функцию main, L11-1.CPP, L11-1.h, L11-2.CPP, L11-2.h
В L11-1.h :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
 
struct kadry
{
    char name[17];
    char inc[7];
    float v;
    int n;
};
 
extern struct kadry array[4];
extern struct kadry x;
 
extern void show_all(void);
А в L11-1.CPP:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "stdafx.h"
#include "L11-1.h"
#include "L11-2.h"
 
 
void show_all(void)
{
    for (int i = 0; i < 4; i++)
    {
        printf("%s\t\t%4d\t\t\t %s\t\t\t %5.2f\n", array[i].name, array[i].n, array[i].inc, array[i].v);
    }
}
а в файлах L11-2.h и L11-2.CPP только одна строка : #include "stdafx.h"
Главный файл с функцией main:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include <iostream>
#include "L11-1.h"
#include "L11-2.h"
 
using namespace std;
 
int main()
{
    show_all();
 
    return 0;
}
никак не могу разобраться
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2012, 15:31     Неразрешенный внешний символ
Посмотрите здесь:

C++ Неразрешенный внешний символ
C++ Неразрешенный внешний символ
Неразрешенный внешний символ C++
неразрешенный внешний символ C++
C++ Ссылка на неразрешенный внешний символ
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
18.12.2012, 15:49     Неразрешенный внешний символ #2
так а в каком файле определён struct kadry array[4]; ???
в одном из CPP файлов должно быть такое объявление(но только в одном)
Kreativ
2 / 2 / 0
Регистрация: 22.09.2012
Сообщений: 202
18.12.2012, 16:10  [ТС]     Неразрешенный внешний символ #3
я значения конкретные не присваивал, в L11-1.h - просто объявил в L11-1.cpp пытаюсь вывести на экран. знаю что тупость, но какие то значения же он должен вывести на экран
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
18.12.2012, 16:38     Неразрешенный внешний символ #4
Цитата Сообщение от Kreativ Посмотреть сообщение
знаю что тупость
А зачем тогда тему создал?
Впрочем суть не в присвоении конкретных значений: не хочешь - не присваивай. Но в одном из СРР файлов проекта должна быть переменная
C++
1
struct kadry array[4];
То, что ты написал
C++
1
extern struct kadry array[4];
- это не объявление. Это просто сообщает компилятору, что в тех файлах проекта, в которых есть
C++
1
#include "L11-1.h"
можно использовать массив kadry array из какого-то другого файла. Т.е. этот массив не создаётся в файле L11-1.h а слово extern служит как-бы напоминанием о том, что он есть в других файлах и его можно использовать. И в данном случае ты жестоко обманываешь систему. Т.к. пообещал ей, создать в одном из cpp файлов массив,
Клятвенно обещал это сделать в h-файле "L11-1.h". И не сдержал обещание.
Срочно пиши в пятой строке L11-1.CPP:
C++
1
struct kadry array[4];
Kreativ
2 / 2 / 0
Регистрация: 22.09.2012
Сообщений: 202
18.12.2012, 17:02  [ТС]     Неразрешенный внешний символ #5
аа спасибо разобрался

Добавлено через 4 минуты
а если я в L11-1.cpp присвоил значения для структуры, то в файле L11-2.cpp она будет "известна"?
Yandex
Объявления
18.12.2012, 17:02     Неразрешенный внешний символ
Ответ Создать тему
Опции темы

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