Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Ошибка не понятная ( Unresolved external )


Автор: rthsobakas 14.5.2009, 19:08
[Linker Error] Error: Unresolved external 'TForm2::' referenced from C:\123\DEBUG_BUILD\PROJECT1.OBJ

Не понятно что за ошибка и отчего она возникает....Код выложил бы. Но его просто много и толку нет особого... Просто важно отчего эта ошибка возникает. Кто встречался?

Автор: rthsobakas 14.5.2009, 19:31
вот короткая часть...

Автор: Данкинг 14.5.2009, 19:32
От чего угодно. smile 

Автор: Artemon 14.5.2009, 19:34
Это означает, что объявлен TForm2 класс, но нет его реализации.

Сделай следующим образом:

Нажми минус на главной панели билдера и удали от туда TForm2, затем нажми плюс и добавь TForm2.

Мне пару раз такое помогало.

Автор: rthsobakas 14.5.2009, 19:42
Artemon, главная панель билдера это что? Project Manager?

Автор: Artemon 14.5.2009, 19:53
в C++Builder 6 в самом верху находится панель, на которой располагается множетсво кнопок, среди которых "+, -".

Похоже у вас IDE более поздней версии, но думаю суть будет одна и таже.

Автор: rthsobakas 14.5.2009, 19:58
Artemon, сделал... Но не помогло.

Автор: rthsobakas 14.5.2009, 20:14
помогите кто нибудь. А то мне край... Главно ошибка не к селу ни к городу.... ниче не ясно

Автор: Artemon 14.5.2009, 20:15
Такое впечатление, что ты ошибку не полностью привел,
Наверно всетаки после TForm2::
Стояло какое-то имя метода ?

Автор: rthsobakas 14.5.2009, 20:22
Artemon,  нет....  именно так... тупо на 1 форме мемо удалил и она появилась.

Автор: Artemon 14.5.2009, 20:30
Я смотрю в блокноте, поэтому могу ошибаться.

У тебя в Классе TForm1 не объявлен Memo1,

но почему-то ты пишешь такой код:

Form1->Memo1->Lines->Add(IntToStr(sText[sSelObj.Count].Y0));

Автор: rthsobakas 14.5.2009, 20:33
Цитата

У тебя в Классе не объявлен Memo1

В каком классе? Как ты класс просмотрел? *.hpp фаил?

Мемо я удалили,но событие остались и они не влияют ни на что.... Я ща их удалил -ниче не изменилось.

А
Form1->Memo1->Lines->Add(IntToStr(sText[sSelObj.Count].Y0));
это закомментил я...


Автор: Artemon 14.5.2009, 20:42
Начнем с того, что не hpp, а просто h.

Я говорю не про события а вот про этот кусок кода:

Код

void __fastcall TForm1::PaintBox1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
..........................................................
  pr0=false;
   pr1=false;
/*Form1->Memo1->Lines->Add(IntToStr(sText[sSelObj.Count].X0));
Form1->Memo1->Lines->Add(IntToStr(sText[sSelObj.Count].Y0));
Form1->Memo1->Lines->Add(IntToStr(sText[sSelObj.Count].X1));
Form1->Memo1->Lines->Add(IntToStr(sText[sSelObj.Count].Y1));
Form1->Memo1->Lines->Add("***"); */
............................................
}

В файле Uni1.cpp

Ты используешь Memo1, но он не объявлен в классе формы TForm1


Автор: rthsobakas 14.5.2009, 20:47
Artemon, класс формы TForm1 это фаил *.h? Я его просто называю хидером, модулем. Я не использую MEMO1!!! я его удалил с формы.

Автор: Artemon 14.5.2009, 20:53
Объясни мне, как можно не использовать Memo, но при этом писать тот код, который я тебе привел ?
Ты ведь конкретно обращаешься к компоненту Memo1, который когда-то лежал на форме.

Пробуй закоментируй строки, в которых упоминается Memo1 (те, которые я привел).


Автор: rthsobakas 14.5.2009, 20:58
Artemon, аааа.... ты че?
Сам себя цитирую
Цитата

В каком классе? Как ты класс просмотрел? *.hpp фаил?

Мемо я удалили,но событие остались и они не влияют ни на что.... Я ща их удалил -ниче не изменилось.

А
Form1->Memo1->Lines->Add(IntToStr(sText[sSelObj.Count].Y0));
это закомментил я...


Код

/*Form1->Memo1->Lines->Add(IntToStr(sText[sSelObj.Count].X0));
Form1->Memo1->Lines->Add(IntToStr(sText[sSelObj.Count].Y0));
Form1->Memo1->Lines->Add(IntToStr(sText[sSelObj.Count].X1));
Form1->Memo1->Lines->Add(IntToStr(sText[sSelObj.Count].Y1));
Form1->Memo1->Lines->Add("***"); */

это символ комментариев 
Код

/*  */

можно их ещё так писать 
Код

//

но в 1 случае он все комментит, во втором строку

Добавлено через 4 минуты и 39 секунд
Данкинг, от чего угодно быть не может! Тогда типо линковщик не правильный. А это тогда жесть ваще.

Добавлено через 7 минут и 43 секунды
НУ вот делаешь делаешь прогу.... А потом какая то нелепая ошибка непонятная и все... Пиши в техподдержку Борланду... Отлично...

Автор: Artemon 14.5.2009, 21:07
Да, действительно, проглядел коментарий в блокноте.

Тгда по другому можно начать разбираться,

1. В Unit1.cpp коментируй эту строку: if (ToolButton1->Down==true) {Form2->Show();}
2. Убери все инклуды, касающиеся Form2. (#include "Unit2.h")

Попробуй, хотябы в таком состоянии будет компилится или нет

Автор: rthsobakas 14.5.2009, 21:18
неаа... не компилит

Автор: Artemon 14.5.2009, 21:20
А что говорит ?

Автор: rthsobakas 14.5.2009, 21:21
Вот что нашел... Но все равно ниче не ясно... 

Цитата

The OBJ PST table contains only global functions and variables. An "Unresolved Externals" may result if you try to access static functions or variables.

Functions declared with the static modifier, by definition, have file scope. Static variables have the same limitation. Trying to access any static variables from outside of the file in which they are declared can result in a compile error or an unresolved external, depending on the specific coding of the source files.

MAIN.CPP

extern void func1(void);

int main()
{
 func1();
}
TEST.CPP

static void func1(void)
 {
  //Do something
 }




Добавлено через 15 секунд
Artemon,  говорит тоже самое

Автор: Artemon 14.5.2009, 21:25
Завтра с утра может кто-то появится с IDE, в которой твой проект можно открыть и может что-то прояснится.

Автор: rthsobakas 14.5.2009, 21:29
Artemon, у меня Турбо Билдер 6 экслоер... это типо 6, но бесплатная версия.... Можно его переконвертировать в 2009... Я переконвертировал и получил кучу новых ошибок того же вида.... ща покажу

Добавлено через 1 минуту и 29 секунд
[ILINK32 Error] Error: Unresolved external '__fastcall System::AnsiString::~AnsiString()' referenced from C:\USERS\ВЛАДЕЛЕЦ\DOCUMENTS\BORLAND STUDIO PROJECTS\BORLAND STUDIO PROJECTS\РАБОТА С ТЕКСТ\DEBUG_BUILD\UNIT1.OBJ

[ILINK32 Error] Error: Unresolved external 'TForm1::' referenced from C:\USERS\ВЛАДЕЛЕЦ\DOCUMENTS\BORLAND STUDIO PROJECTS\BORLAND STUDIO PROJECTS\РАБОТА С ТЕКСТ\DEBUG_BUILD\PROJECT1.OBJ


[ILINK32 Error] Error: Unresolved external '__fastcall System::TObject::NewInstance(System::TMetaClass *)' referenced from C:\USERS\ВЛАДЕЛЕЦ\DOCUMENTS\BORLAND STUDIO PROJECTS\BORLAND STUDIO PROJECTS\РАБОТА С ТЕКСТ\DEBUG_BUILD\UNIT2.OBJ

 и тд

Добавлено через 2 минуты и 21 секунду
но все равно
[ILINK32 Error] Error: Unresolved external 'TForm1::' referenced from C:\USERS\ВЛАДЕЛЕЦ\DOCUMENTS\BORLAND STUDIO PROJECTS\BORLAND STUDIO PROJECTS\РАБОТА С ТЕКСТ\DEBUG_BUILD\PROJECT1.OBJ

осталась

Автор: A5uKa 15.5.2009, 08:19
нет нет ... это вроде либо страшная ошибка .h , либо ошибка компонентов, либо нажми Build или Make , бывает мешаются файлы старой компиляции, бильдер пытается с них плясать.

Автор: rthsobakas 15.5.2009, 14:08
A5uKa, не помогло.

Автор: A5uKa 15.5.2009, 14:12
Комментируй весь код и смотри что будет ,

или создавай новый проект и перетаскивай код - 2минуты работы.

Автор: xvr 15.5.2009, 14:23
У тебя конструктор TForm1 пал смертью храбрых (где то)  smile 
Добавь его обратно (в Unit1.cpp)
Код

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {}


Автор: rthsobakas 15.5.2009, 18:17
xvr, а куда добавить?

В unit1.h
Код

private:    // User declarations
public:        // User declarations
        __fastcall TForm1(TComponent* Owner);


В unit2.h
Код

private:    // User declarations
public:        // User declarations
        __fastcall TForm2(TComponent* Owner);


присутствуют

Автор: A5uKa 15.5.2009, 19:14
Цитата

У тебя конструктор TForm1 пал смертью храбрых (где то)  smile 


или любой другой компонент.
Делай как в моём предыдущем посте - меньше потратишь времени

Автор: xvr 15.5.2009, 20:53
Цитата(rthsobakas @ 15.5.2009,  18:17)
xvr, а куда добавить?

В unit1.cpp

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)