[ILINK32 Error] Error: Unresolved external '_Form2' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\PROJECT1.OBJ
[ILINK32 Error] Error: Unresolved external '__fastcall TForm2::FormStartDock(System::TObject *, Controls::TDragDockObject *&)' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ
[ILINK32 Error] Error: Unresolved external '__fastcall TForm2::FormDockDrop(System::TObject *, Controls::TDragDockObject *, int, int)' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ
[ILINK32 Warning] Warning: Public symbol '_Form1' defined in both module C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ and C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT1.OBJ
ILINK32 Error - Ошибка при компиляции
На компьютере стоит C++Builder 2007
при компиляции программы выскакивает вот такая Бяка:
Код:
Что это такое?
как это исправить - чтобы всё работало
-----------------------------------------------
перерыл весь инет - вменяемого ответа так и не нашёл, видел кучу Тролей
Цитата:
[ILINK32 Error] Error: Unresolved external '__fastcall TForm2::FormStartDock(System::TObject *, Controls::TDragDockObject *&)' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ
[ILINK32 Error] Error: Unresolved external '__fastcall TForm2::FormDockDrop(System::TObject *, Controls::TDragDockObject *, int, int)' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ
[ILINK32 Error] Error: Unresolved external '__fastcall TForm2::FormDockDrop(System::TObject *, Controls::TDragDockObject *, int, int)' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ
решение нашёл тут
вот чего у меня получилось в файле Unit2.h
Код:
//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Mask.hpp>
#include <Buttons.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TMaskEdit *MaskEdit1;
TMaskEdit *MaskEdit2;
TMaskEdit *MaskEdit3;
TBitBtn *BitBtn1;
void __fastcall BitBtn1Click(TObject *Sender);
void __fastcall MaskEdit3Change(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
// void __fastcall FormStartDock(TObject *Sender, TDragDockObject *&DragObject); - говорят это надо убрать чтобы всёработало, пока закоментил, буду смотереть чего получится
void __fastcall FormActivate(TObject *Sender);
// void __fastcall FormDockDrop(TObject *Sender, TDragDockObject *Source, int X,
// int Y);
// void __fastcall FormDragDrop(TObject *Sender, TObject *Source, int X, int Y);
private: // User declarations
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Mask.hpp>
#include <Buttons.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TMaskEdit *MaskEdit1;
TMaskEdit *MaskEdit2;
TMaskEdit *MaskEdit3;
TBitBtn *BitBtn1;
void __fastcall BitBtn1Click(TObject *Sender);
void __fastcall MaskEdit3Change(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
// void __fastcall FormStartDock(TObject *Sender, TDragDockObject *&DragObject); - говорят это надо убрать чтобы всёработало, пока закоментил, буду смотереть чего получится
void __fastcall FormActivate(TObject *Sender);
// void __fastcall FormDockDrop(TObject *Sender, TDragDockObject *Source, int X,
// int Y);
// void __fastcall FormDragDrop(TObject *Sender, TObject *Source, int X, int Y);
private: // User declarations
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif
Код:
[ILINK32 Warning] Warning: Public symbol '_Form1' defined in both module C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ and C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT1.OBJ
решение откапал здесь
Цитата:
;)Похожая ситуация, тоже три класса, один, условно говоря, основной (Назовем его А ) и два дополнительных TPlayThread , FlashIO .
Когда в основном классе А, классы TPlayThread , TFlashIO были объявлены в .cpp файле (TPlayThread*PlayThread, TFlashIO*FlashIO), всё было ОК, кроме невозможности обращения к методам FlashIO из PlayThread. Всё работало только из класса А.
Я перенёс объявления в h файл соответствующего класса, т.е. в FlashIO.h объявлено TFlashIO*FlashIO. Теперь все друг друга видят, но линкер ругается:
CollapsedExpandedWrap enabledWrap disabled
ILINK32 Warning] Warning: Public symbol '_FlashIO' defined in both module D:\PROJECTS\DIC\PCDIC\DEBUG\UPLAYTHREAD.OBJ and D:\PROJECTS\DIC\PCDIC\DEBUG\UDIC.OBJ
[ILINK32 Warning] Warning: Public symbol '_FlashIO' defined in both module D:\PROJECTS\DIC\PCDIC\DEBUG\UPLAYTHREAD.OBJ and D:\PROJECTS\DIC\PCDIC\DEBUG\UFLASHIO.OBJ
[ILINK32 Warning] Warning: Public symbol '_FlashIO' defined in both module D:\PROJECTS\DIC\PCDIC\DEBUG\UDIC.OBJ and D:\PROJECTS\DIC\PCDIC\DEBUG\UFLASHIO.OBJ
Предположу, что из за взаимного перекрёстного включения h файлов, но если этого не делать, то снова кто то, что то не видит…
Когда в основном классе А, классы TPlayThread , TFlashIO были объявлены в .cpp файле (TPlayThread*PlayThread, TFlashIO*FlashIO), всё было ОК, кроме невозможности обращения к методам FlashIO из PlayThread. Всё работало только из класса А.
Я перенёс объявления в h файл соответствующего класса, т.е. в FlashIO.h объявлено TFlashIO*FlashIO. Теперь все друг друга видят, но линкер ругается:
CollapsedExpandedWrap enabledWrap disabled
ILINK32 Warning] Warning: Public symbol '_FlashIO' defined in both module D:\PROJECTS\DIC\PCDIC\DEBUG\UPLAYTHREAD.OBJ and D:\PROJECTS\DIC\PCDIC\DEBUG\UDIC.OBJ
[ILINK32 Warning] Warning: Public symbol '_FlashIO' defined in both module D:\PROJECTS\DIC\PCDIC\DEBUG\UPLAYTHREAD.OBJ and D:\PROJECTS\DIC\PCDIC\DEBUG\UFLASHIO.OBJ
[ILINK32 Warning] Warning: Public symbol '_FlashIO' defined in both module D:\PROJECTS\DIC\PCDIC\DEBUG\UDIC.OBJ and D:\PROJECTS\DIC\PCDIC\DEBUG\UFLASHIO.OBJ
Предположу, что из за взаимного перекрёстного включения h файлов, но если этого не делать, то снова кто то, что то не видит…
Цитата:
:cool:Ну так убери из заголовочного файла определение переменных. Или добавь к ним extern.
Надо ж хотя б немножко понимать инструмент, которым пользуешься.
Надо ж хотя б немножко понимать инструмент, которым пользуешься.
кратенько про всякие там штуки:
Unresolved external - это сообщение линкера, означает, что в исходниках используется функция, которой нет в подключенных библиотеках и он не знает, что прилинковывать.
Слово "extern" в си означает, что переменная описана где-то в другом модуле, а в текущем описывается просто ссылка, чтобы ей можно было пользоваться.
это взял тут
Для тех кто на майле не зареган вот текст полностью:
Нашёл решение - точнее помогли в сообществе "Программирование" - на майл ру
-------------------------------------------------------------------------
Для тех кто там незареган вот текст всего что написано по ссылке:
Цитата:
:Unresolved external - Ошибка при компиляции
C++Builder 2007
при компиляции небольшой программы компилятор выдаёт вот такую бредятину:
[ILINK32 Error] Error: Unresolved external '_Form2' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\PROJECT1.OBJ
[ILINK32 Error] Error: Unresolved external '__fastcall TForm2::FormStartDock(System::TObject *, Controls::TDragDockObject *&)' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ
[ILINK32 Error] Error: Unresolved external '__fastcall TForm2::FormDockDrop(System::TObject *, Controls::TDragDockObject *, int, int)' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ
[ILINK32 Warning] Warning: Public symbol '_Form1' defined in both module C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ and C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT1.OBJ
что это такое?
Как сделать чтобы программа работала?
:rolleyes:Re: Unresolved external - Ошибка при компиляции
Unresolved external - это сообщение линкера, означает, что в исходниках используется функция, которой нет в подключенных библиотеках и он не знает, что прилинковывать.
C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ
Это означает только одно: пути к проектам Билдера НЕ МОГУТ содержать русские символы!
Re[2]: Unresolved external - Ошибка при компиляции
Спасибо - ответ понятный, написан вполне человеческим языком - а то сколько форумы не рыл - там была одна тока бредятина малопонятная
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
пути к проектам Билдера НЕ МОГУТ содержать русские символы!
- вот почти та же программа - все символы в пути латинские:
-------------------------------------------------------------------------------------------------------
[ILINK32 Error] Error: Unresolved external '_A' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT ON ADDING FRACTIONS\DEBUG\UNIT1.OBJ
[ILINK32 Error] Error: Unresolved external '_B' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT ON ADDING FRACTIONS\DEBUG\UNIT1.OBJ
[ILINK32 Error] Error: Unresolved external '_Reply' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT ON ADDING FRACTIONS\DEBUG\UNIT1.OBJ
[ILINK32 Error] Error: Unresolved external '_User' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT ON ADDING FRACTIONS\DEBUG\UNIT1.OBJ
-----------------------------------------
или я не там смотрю?
- где посмотреть пути к проектам?
----------------------------------------------------------
в исходниках используется функция, которой нет в подключенных библиотеках
- насколько понял эти библиотеки подключаются к проекту из главного окошка Билдера (Shift + F11), где то на форумах прочитал что к проекту надо подключить "Wininet.lib" (из каталога C:\Program Files\CodeGear\RAD Studio\5.0\lib\psdk) - подключил - запустил компиляцию программы - не помогло - ошибки осталась те же.
-------------------------------------------------
Ошибки линкера стали выскакивать после того как подключил Хидер (Хедер), вот собственно он:
-----------------------------------------------------------------------------------
// extern int Examples[5][2];
// extern int Estimation;
//extern int Answers[5][2];
//extern int User[];
//extern const int n = 2; // для массива Answers[][n] //
extern double Reply[15]; // задание одномерного массива правилынх ответов
extern double User[15]; // ответы пользователя //
extern double A[15]; // Масивы для заполнения поля Tmemo
extern double B[15];
// переменные для формы регистрации //
extern AnsiString Names ; // задание новой строки //
extern AnsiString Class ;
extern AnsiString Surname ;
----------------------------------------------------------------------------
может в нём что напутано неправильно написано?
хотя в других программах всё работает вполне нормально - когда так же точно Хидер оформляю
:rolleyes:Re[3]: Unresolved external - Ошибка при компиляции
extern double Reply[15]; // задание одномерного массива правилынх ответов
extern double User[15]; // ответы пользователя //
extern double A[15]; // Масивы для заполнения поля Tmemo
extern double B[15];
-----------------------
Слово "extern" в си означает, что переменная описана где-то в другом модуле, а в текущем описывается просто ссылка, чтобы ей можно было пользоваться. Вот реального описания этих переменных похоже нигде нет. Или уберите "extern" из их описания здесь или опишите их реально в другом модуле.
//------------------------------------------------------------------//
Re[4]: Unresolved external - Ошибка при компиляции
Спасибо большое - а то как обезьяна пишу чего то и не совсем понимаю что это - поправил хидер Всё работает
Спасибо
C++Builder 2007
при компиляции небольшой программы компилятор выдаёт вот такую бредятину:
[ILINK32 Error] Error: Unresolved external '_Form2' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\PROJECT1.OBJ
[ILINK32 Error] Error: Unresolved external '__fastcall TForm2::FormStartDock(System::TObject *, Controls::TDragDockObject *&)' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ
[ILINK32 Error] Error: Unresolved external '__fastcall TForm2::FormDockDrop(System::TObject *, Controls::TDragDockObject *, int, int)' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ
[ILINK32 Warning] Warning: Public symbol '_Form1' defined in both module C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ and C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT1.OBJ
что это такое?
Как сделать чтобы программа работала?
:rolleyes:Re: Unresolved external - Ошибка при компиляции
Unresolved external - это сообщение линкера, означает, что в исходниках используется функция, которой нет в подключенных библиотеках и он не знает, что прилинковывать.
C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT =L TT+¦+=L+ -¦+++г\DEBUG\UNIT2.OBJ
Это означает только одно: пути к проектам Билдера НЕ МОГУТ содержать русские символы!
Re[2]: Unresolved external - Ошибка при компиляции
Спасибо - ответ понятный, написан вполне человеческим языком - а то сколько форумы не рыл - там была одна тока бредятина малопонятная
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
пути к проектам Билдера НЕ МОГУТ содержать русские символы!
- вот почти та же программа - все символы в пути латинские:
-------------------------------------------------------------------------------------------------------
[ILINK32 Error] Error: Unresolved external '_A' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT ON ADDING FRACTIONS\DEBUG\UNIT1.OBJ
[ILINK32 Error] Error: Unresolved external '_B' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT ON ADDING FRACTIONS\DEBUG\UNIT1.OBJ
[ILINK32 Error] Error: Unresolved external '_Reply' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT ON ADDING FRACTIONS\DEBUG\UNIT1.OBJ
[ILINK32 Error] Error: Unresolved external '_User' referenced from C:\DOCUMENTS AND SETTINGS\GAMES\RAD STUDIO\PROJECTS\TECT ON ADDING FRACTIONS\DEBUG\UNIT1.OBJ
-----------------------------------------
или я не там смотрю?
- где посмотреть пути к проектам?
----------------------------------------------------------
в исходниках используется функция, которой нет в подключенных библиотеках
- насколько понял эти библиотеки подключаются к проекту из главного окошка Билдера (Shift + F11), где то на форумах прочитал что к проекту надо подключить "Wininet.lib" (из каталога C:\Program Files\CodeGear\RAD Studio\5.0\lib\psdk) - подключил - запустил компиляцию программы - не помогло - ошибки осталась те же.
-------------------------------------------------
Ошибки линкера стали выскакивать после того как подключил Хидер (Хедер), вот собственно он:
-----------------------------------------------------------------------------------
// extern int Examples[5][2];
// extern int Estimation;
//extern int Answers[5][2];
//extern int User[];
//extern const int n = 2; // для массива Answers[][n] //
extern double Reply[15]; // задание одномерного массива правилынх ответов
extern double User[15]; // ответы пользователя //
extern double A[15]; // Масивы для заполнения поля Tmemo
extern double B[15];
// переменные для формы регистрации //
extern AnsiString Names ; // задание новой строки //
extern AnsiString Class ;
extern AnsiString Surname ;
----------------------------------------------------------------------------
может в нём что напутано неправильно написано?
хотя в других программах всё работает вполне нормально - когда так же точно Хидер оформляю
:rolleyes:Re[3]: Unresolved external - Ошибка при компиляции
extern double Reply[15]; // задание одномерного массива правилынх ответов
extern double User[15]; // ответы пользователя //
extern double A[15]; // Масивы для заполнения поля Tmemo
extern double B[15];
-----------------------
Слово "extern" в си означает, что переменная описана где-то в другом модуле, а в текущем описывается просто ссылка, чтобы ей можно было пользоваться. Вот реального описания этих переменных похоже нигде нет. Или уберите "extern" из их описания здесь или опишите их реально в другом модуле.
//------------------------------------------------------------------//
Re[4]: Unresolved external - Ошибка при компиляции
Спасибо большое - а то как обезьяна пишу чего то и не совсем понимаю что это - поправил хидер Всё работает
Спасибо