Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ILINK32 Error - Ошибка при компиляции

64K
25 ноября 2010 года
Niakita
3 / / 25.11.2010
Учусь программировать на С++
На компьютере стоит 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


Что это такое?
как это исправить - чтобы всё работало
-----------------------------------------------
перерыл весь инет - вменяемого ответа так и не нашёл, видел кучу Тролей
64K
26 ноября 2010 года
Niakita
3 / / 25.11.2010
всё ещё думаю, начал потихонечку понимать:

Цитата:
[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



решение нашёл тут

вот чего у меня получилось в файле 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
64K
26 ноября 2010 года
Niakita
3 / / 25.11.2010
 
Код:
[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 файлов, но если этого не делать, то снова кто то, что то не видит…



Цитата:
: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 - Ошибка при компиляции
Спасибо большое - а то как обезьяна пишу чего то и не совсем понимаю что это - поправил хидер Всё работает

Спасибо

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог