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

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

Войти
Регистрация
Восстановить пароль
 
Riddleman
1 / 1 / 4
Регистрация: 03.03.2013
Сообщений: 49
#1

Ошибка при компиляции Unresolved external - C++

02.06.2014, 01:49. Просмотров 194. Ответов 8
Метки нет (Все метки)

Доброго времени суток. У меня в программе есть клас Masiv, объявленный с идентификатором extern. Далее я в одной из функцый его иницыализирую и исползую, а потом в и других функцыях исползую. Сам клас описан в другом файле и подинкуденый к в той, где я его исползую. При компиляции выдает ошибку Error: Unresolved external '_Masiv'. Не понимаю где ошибка, файл где описан класс подключен, нет никаких неизвесных переменных. Подскажите пожалуйста, что я не так сделал?
Буду очень благодарен.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12877 / 7263 / 810
Регистрация: 27.09.2012
Сообщений: 17,940
Записей в блоге: 2
Завершенные тесты: 1
02.06.2014, 01:54     Ошибка при компиляции Unresolved external #2
Цитата Сообщение от Riddleman Посмотреть сообщение
Подскажите пожалуйста, что я не так сделал?
показывайте, что Вы там сделали(желательно минимизировать, но без потери ошибки)
Riddleman
1 / 1 / 4
Регистрация: 03.03.2013
Сообщений: 49
02.06.2014, 02:22  [ТС]     Ошибка при компиляции Unresolved external #3
Укоротил как мог. Файл в котором лежит этот код называется File_for_Form_MainWindow.cpp
Собственно полный код ошибки:
[ILINK32 Error] Error: Unresolved external '_Masiv' referenced from D:\ЯПОНСЬКІ ГОЛОВОЛОМКИ 2\DEBUG\FILE_FOR_FORM_MAINWINDOW.OBJ

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
#include "PuzzleGrid.h"
 
TForm_MainWindow *Form_MainWindow;
extern PuzzleGrid Masiv;//!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
__fastcall TForm_MainWindow::TForm_MainWindow(TComponent* Owner)
    : TForm(Owner)
{
}
 
void __fastcall TForm_MainWindow::Button_OpenClick(TObject *Sender)
{
    char *shlax=new char[Form_open_golovolomka->Edit_open_path->Text.Length()+ 1];
    strcpy(shlax,Form_open_golovolomka->Edit_open_path->Text.t_str());
    StringGrid_MainGrid->Visible = false;
    PuzzleGrid Masiv(shlax);//!!!!!!!!!!!!!!!!!!!!!!!
}
 
void __fastcall TForm_MainWindow::Button_RozraxynokClick(TObject *Sender)
{
 
        Masiv.Analis();
        //Setka.RozrahunokGolovolomku();
 
        StringGrid_VM->Visible = false;
        StringGrid_HM->Visible = false;
        StringGrid_VM->ColCount= Masiv.VmasColSize(); //Setka.VColCount();
        StringGrid_HM->RowCount= Masiv.GmasRowSize(); //Setka.HRowCount();
 
        for(int ARow=0;ARow<Masiv.RowSize() /*Setka.RowCount()*/;ARow++)
            for(int ACol=0;ACol<Masiv.VmasColSize() /*Setka.VColCount()*/;ACol++)
                 StringGrid_VM->Cells[ACol][ARow] = Masiv.VmasCellValue(ARow,ACol); //Setka.VerticalMatrix[ARow][ACol];
 
 
        for(int ARow=0;ARow<Masiv.GmasRowSize() /*Setka.HRowCount()*/;ARow++)
            for(int ACol=0;ACol<Masiv.ColSize() /*Setka.ColCount()*/;ACol++)
                StringGrid_HM->Cells[ACol][ARow] =Masiv.GmasRowSize() /*Setka.HorizontalMatrix[ARow][ACol]*/;
        StringGrid_VM->Visible = true;
        StringGrid_HM->Visible = true;
}
Croessmah
Модератор
Эксперт CЭксперт С++
12877 / 7263 / 810
Регистрация: 27.09.2012
Сообщений: 17,940
Записей в блоге: 2
Завершенные тесты: 1
02.06.2014, 02:45     Ошибка при компиляции Unresolved external #4
C++
1
PuzzleGrid Masiv(shlax);//!!!!!!!!!!!!!!!!!!!!!!!
это локальная переменная.

Где-то в cpp:
C++
1
PuzzleGrid Masiv;
Riddleman
1 / 1 / 4
Регистрация: 03.03.2013
Сообщений: 49
02.06.2014, 14:32  [ТС]     Ошибка при компиляции Unresolved external #5
Что то я не догнал
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.06.2014, 15:07     Ошибка при компиляции Unresolved external #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Riddleman Посмотреть сообщение
Файл в котором лежит этот код называется File_for_Form_MainWindow.cpp
В нём сделайте:
C++
1
PuzzleGrid Masiv;
Если эта переменная ещё где-нибудь нужна, то в .h файле сделайте:
C++
1
extern PuzzleGrid Masiv;
и подключайте этот .h файл к нужным .cpp (где нужна Masiv).
Riddleman
1 / 1 / 4
Регистрация: 03.03.2013
Сообщений: 49
02.06.2014, 17:29  [ТС]     Ошибка при компиляции Unresolved external #7
Вынес в отдельный файл, перекомпилировал, выдает все ту же ошибку
RaiaNKnight
96 / 70 / 7
Регистрация: 29.06.2011
Сообщений: 464
Записей в блоге: 1
02.06.2014, 17:35     Ошибка при компиляции Unresolved external #8
Может просто переменную объявить в хэдере, а в конструкторе формы или где ещё её инициализировать?

File_for_Form_MainWindow.h - тут пусть в private будет поле PuzzleGrid Masiv
masiv.initialize(shlax); - добавьте метод initialize к классу PuzzleGrid.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2014, 18:48     Ошибка при компиляции Unresolved external
Еще ссылки по теме:

Ошибка линковщика Unresolved External C++
Ошибка: unresolved external symbol C++
C++ Ошибка Unresolved external
Ошибка error LNK2019: unresolved external symbol char * C++
Ошибка Unresolved external symbol C++

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

Или воспользуйтесь поиском по форуму:
Riddleman
1 / 1 / 4
Регистрация: 03.03.2013
Сообщений: 49
02.06.2014, 18:48  [ТС]     Ошибка при компиляции Unresolved external #9
Допёрло наконец, я определил объект внутри функции, а так нельзя. Выходит хоть и при объявлении есть модификатор extern определять ее всеравно нужно как глобальную, вне функцый.

Добавлено через 1 час 3 минуты
Да, на радостях забыл. Спасибо всем кто откликнулся
Yandex
Объявления
02.06.2014, 18:48     Ошибка при компиляции Unresolved external
Ответ Создать тему
Опции темы

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