Здравствуйте Shergin, вы писали:
S>msvc++6 при компиляции выдаёт: S>Base.obj : error LNK2001: unresolved external symbol "public: void __thiscall CItem::Empty(void)" (?Empty@CItem@@QAEXXZ) S>Что это значит? Что ему не понравилось?
гы-гы-гы...
Извиняюсь.... не удержался....
MSDN Troubleshooting LNK2001 or L2029 Unresolved External Errors ID: Q138400
Рекомендую....
Здравствуйте IT, вы писали:
IT>Здравствуйте Shergin, вы писали:
S>>--------------------Configuration: nai — Win32 Debug-------------------- S>>Linking... S>>Base.obj : error LNK2001: unresolved external symbol "public: void __thiscall CItem::Empty(void)" (?Empty@CItem@@QAEXXZ) S>>Debug/nai.exe : fatal error LNK1120: 1 unresolved externals
IT>CItem твой класс? Это значит, что ты не определил метод Empty, но где-то его вызываешь.
Извини, но, по-моему, ты не прав. Ошибка возникает на стадии связывания, а не компиляции.
Эта ошибка всегда возникает, если я пытаюсь использовать классы созданные в других моих программах. Что мне делать?
ЗЫ: Естественно и речи не идет что CItem::Empty() не определен.
Hi Shergin, вы писали:
S>Извини, но, по-моему, ты не прав. Ошибка возникает на стадии связывания, а не компиляции. S>Эта ошибка всегда возникает, если я пытаюсь использовать классы созданные в других моих программах. Что мне делать? S>ЗЫ: Естественно и речи не идет что CItem::Empty() не определен.
Я извиняюсь за слишком эмоциональный ответ выше :o)), но просто у друга ;o) была эта ошибка недавно в ATL проекте
Все дело в том, что линкер не может "распознать" адрес функции.
Что за проект? Ошибка и на Release и на Debug версии?
Фишка в том, что "ссылка" на функцию есть в объектном файле, а реализации функции нет (_ОНИ_так_думают_). Похоже на то, что предположил IT. Свои DLL в проекте используешь? — помоему фишка в этом. или нет? Что значит "использовать классы созданные в других моих программах"?
Через форум тебе помочь мало реально (ИМХО). Еще раз говорю — чтобы понять причину ошибки посмотри MSDN
[ORIGINAL]
Frequent Causes of the "Unresolved External" Error Message
Missing Object Files or Libraries
Missing Function Body or Variable
Symbol Can't be Found in the Libraries or Object Modules
Case Sensitivity
Name Decoration — обрати внимание
A Symbol Is Not Public
Scoping Problems and Pure Virtual Functions
Function Inlining
Wrong Compiler Options or Mixing Incompatible Librar
Здравствуйте Shergin, вы писали:
S>>>--------------------Configuration: nai — Win32 Debug-------------------- S>>>Linking... S>>>Base.obj : error LNK2001: unresolved external symbol "public: void __thiscall CItem::Empty(void)" (?Empty@CItem@@QAEXXZ) S>>>Debug/nai.exe : fatal error LNK1120: 1 unresolved externals
IT>>CItem твой класс? Это значит, что ты не определил метод Empty, но где-то его вызываешь.
S>Извини, но, по-моему, ты не прав. Ошибка возникает на стадии связывания, а не компиляции.
Может и не прав. Что бы сказать точно, нужно видеть твой проект. То что это линковщик я тоже вижу и так же вижу причину ошибки: нет такой функции. Она может и есть, но линковщик её не видит. Может быть ты компилируешь модули с разными опциями, может это тот глюк VS, который лечится просто перекомпиляцией всего проекта с предварительным удалением *.pch, может ещё что-то.
S>Эта ошибка всегда возникает, если я пытаюсь использовать классы созданные в других моих программах. Что мне делать?
Какие dll’ки?! Простые *.h’ки и *.cpp’ки!!! Что самое и обидное! Просто написал программу, потом захотел кардинально переделать интерфейс, создал новый проект, скопировал туда файлы классов, написал #include “base.h”… А он мне такое!..
Здравствуйте Shergin, вы писали:
S>>>--------------------Configuration: nai — Win32 Debug-------------------- S>>>Linking... S>>>Base.obj : error LNK2001: unresolved external symbol "public: void __thiscall CItem::Empty(void)" (?Empty@CItem@@QAEXXZ) S>>>Debug/nai.exe : fatal error LNK1120: 1 unresolved externals
IT>>CItem твой класс? Это значит, что ты не определил метод Empty, но где-то его вызываешь.
S>Извини, но, по-моему, ты не прав. Ошибка возникает на стадии связывания, а не компиляции. S>Эта ошибка всегда возникает, если я пытаюсь использовать классы созданные в других моих программах. Что мне делать? S>ЗЫ: Естественно и речи не идет что CItem::Empty() не определен.
Вот именно то, что ошибка происходит на стадии линковки означает то, что метод не определен. Если бо он не был объявлен, тогда ошибка возникла бы на стадии компиляции, а не линковки. В твоем же случае метод объявлен, поэтому компилятор молчит, но определения метода нет — поэтому линкер ругается.
Здравствуйте Shergin, вы писали:
S>Какие dll’ки?! Простые *.h’ки и *.cpp’ки!!! Что самое и обидное! Просто написал программу, потом захотел кардинально переделать интерфейс, создал новый проект, скопировал туда файлы классов, написал #include “base.h”… А он мне такое!..
Найди файл с определением этого метода и посмотри, подключен ли он к проекту. Если не сложно, приведи тут определение твоего класса и определение этого конкретного метода.
Здравствуйте Андрей Тарасевич, вы писали:
АТ>Найди файл с определением этого метода и посмотри, подключен ли он к проекту. Если не сложно, приведи тут определение твоего класса и определение этого конкретного метода.
Здравствуйте Shergin, вы писали:
S>Так оно и есть... =)
;) Странно, а что тогда Base.cpp в твоём первом постинге?
S>--------------------Configuration: nai — Win32 Debug-------------------- S>Compiling... S>nai.cpp S>Generating Code... S>Compiling... S>naiDlg.cpp S>ListPic.cpp S>Base.cpp S>Generating Code... S>Linking...
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте IT, вы писали:
IT>Здравствуйте Shergin, вы писали:
S>>Так оно и есть... =)
IT>) Странно, а что тогда Base.cpp в твоём первом постинге?
S>>--------------------Configuration: nai — Win32 Debug-------------------- S>>Compiling... S>>nai.cpp S>>Generating Code... S>>Compiling... S>>naiDlg.cpp S>>ListPic.cpp S>>Base.cpp S>>Generating Code... S>>Linking...
Base.cpp это не то!
Вот еслиб там было Item.cpp ...
Забей! Теперь то все работает!