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

Ошибка LNK2019 - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
DarkKelt
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 7
17.07.2013, 18:22     Ошибка LNK2019 #1
Создается библиотека D:\EWIL\EWIL(Old)\EWIL\scr\map editor\Debug\Map Editor.lib и объект D:\EWIL\EWIL(Old)\EWIL\scr\map editor\Debug\Map Editor.exp
4>EditorApp.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: virtual __thiscall TSkyBox::~TSkyBox(void)" (??1TSkyBox@@UAE@XZ) в функции __unwindfunclet$??0EditorApp@@QAE@XZ$0
4>EditorApp.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall TSkyBox::TSkyBox(void)" (??0TSkyBox@@QAE@XZ) в функции "public: __thiscall EditorApp::EditorApp(void)" (??0EditorApp@@QAE@XZ)
4>EditorApp.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall TSkyBox:rawTheSkybox(void)" (?DrawTheSkybox@TSkyBox@@QAEXXZ) в функции "public: virtual void __stdcall EditorApp::CreateSky(void)" (?CreateSky@EditorApp@@UAGXXZ)
4>EditorApp.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: long __thiscall TSkyBox::CreateSkyBox(void)" (?CreateSkyBox@TSkyBox@@QAEJXZ) в функции "public: virtual void __stdcall EditorApp::CreateSky(void)" (?CreateSky@EditorApp@@UAGXXZ)
4>D:\EWIL\EWIL(Old)\EWIL\scr\map editor\Debug\Map Editor.exe : fatal error LNK1120: 4 неразрешенных внешних элементов


как я понял он не видит методы описанные в ewil_skybox.cpp они засовываются в ewild.lib, подключение есть в проекте, вопрос: Почему он не видит методы если они описаны в cpp и если они объявленны как пустые () в классе, грубо говоря определение внутри класса нужно, но это извращением мне кажется. Связь между проектами идёт так EWIL ->Map Editor, нет ли ещё проблемы в том, что функции EWIL выгружаются в dll и в lib одновременно?
з.ы. MVS 2010 Professional

Добавлено через 11 часов 38 минут
Дополню что до включения обращений к методам описанным в файле TSkyBox.cpp и объявления связи с классом TSkyBox всё проходит нормально.

Добавлено через 2 минуты
Как понимаю помочь никто не может?!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2013, 18:22     Ошибка LNK2019
Посмотрите здесь:

C++ Ошибка LNK2019
Ошибка LNK2019 C++
C++ Ошибка LNK2019
Ошибка LNK2019 C++
Ошибка LNK2019 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
17.07.2013, 18:32     Ошибка LNK2019 #2
Цитата Сообщение от DarkKelt Посмотреть сообщение
Почему он не видит методы если они описаны в cpp и если они объявленны как пустые () в классе
Всмысле они нигде не определяются? Пустой метод должен выглядеть так
C++
1
void method(){}
Если фигурных скобок нет, то конечно линкер не находит реализацию, поэтому и ругается.
DarkKelt
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 7
17.07.2013, 19:12  [ТС]     Ошибка LNK2019 #3
C++
1
2
3
4
5
6
7
8
9
10
11
class TSkyBox:public EWIL_Direct3D9
{
public:
   /*Public Directives*/
    TSkyBox(void);
    virtual ~TSkyBox(void);
 
   HRESULT Initialize(float fSize);
   HRESULT CreateSkyBox();
   void DrawTheSkybox();
}
часть из файла в TSkyBox.cpp
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
HRESULT TSkyBox::CreateSkyBox(void)
{
  //Initialize Environment
  float _Radius = 1000.0f;
  if(FAILED(SkyBox.Initialize(_Radius))) return E_FAIL;
  
  /*//Misc Stuff
  D3DXMATRIXA16 m_matPosition;
  D3DXMatrixRotationX(&m_matPosition,D3DX_PI*-0.3f);
  m_matPosition._42 = 15.0f;
  m_matPosition._43 = 15.0f;  
  D3DXMatrixInverse(&m_matView,NULL,&m_matPosition);*/
  
  //Setup Render States
  //gr_Direct3DDevice->SetFVF(D3DFVF_XYZ);
 
  m_bDrawSkyBox = TRUE;
 
  for (UINT I = 0; I<6; I++)
  {
      D3DXCreateTextureFromFileEx(m_pD3DDevice_D9,szSkyTex[I],D3DX_DEFAULT,D3DX_DEFAULT,
    1,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_DEFAULT,D3DX_DEFAULT,0,NULL,NULL,&m_pSkyTex[I]);
  }
  
  //Set Cull Mode
  m_pD3DDevice_D9->SetRenderState(D3DRS_CULLMODE,D3DCULL_CW);
  
  //Set Skybox Surfaces
  if (FAILED(SkyBox.SetSurfaces(
  m_pSkyTex[D3DCUBEMAP_FACE_NEGATIVE_X],m_pSkyTex[D3DCUBEMAP_FACE_POSITIVE_X],
  m_pSkyTex[D3DCUBEMAP_FACE_NEGATIVE_Y],m_pSkyTex[D3DCUBEMAP_FACE_POSITIVE_Y],
  m_pSkyTex[D3DCUBEMAP_FACE_POSITIVE_Z],m_pSkyTex[D3DCUBEMAP_FACE_NEGATIVE_Z]))) return E_FAIL;
    
  return S_OK;
} //EndCreateSkyBoxFunction
извиняюсь, наверное не точно выразился, просто в классе объявленно как пустое, но описывается в cpp пример как в исходнике привёл.

Добавлено через 7 минут
дополню что связь вызовов идёт из разных проектов, между собой подключены все lib, то есть проблемы упирается в реализацию методов, они у меня описываются в TSkyBox.cpp проект EWIL, а я пытаюсь вызвать эти методы, в AppEditor.cpp он находится в проекте Map Editor, если переношу реализацию конструктора в сам класс, то проблема с первыми двумя ошибками его вызова TSkyBox уходит, но остаются ещё две ошибки, вот и хочу понять почему такое поведение

Добавлено через 19 минут
прочитай пост выше

Добавлено через 2 минуты
решил как ты сказал попробовать выдал ошибку, что метод уже определён, попробовал виртуальной сделать та же хрень
DarkKelt
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 7
03.08.2013, 05:57  [ТС]     Ошибка LNK2019 #4
тема закрыта, нашёл в чём проблема уже давно
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
03.08.2013, 22:03     Ошибка LNK2019 #5
и в чем жэ решэние? У меня похожая проблема была и до сих пор не могу понять в чем прикол. Пути к хидерам прописал в свойствах, и ничего не помогло. Ти как решылсвою проблему?
DarkKelt
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 7
04.08.2013, 04:03  [ТС]     Ошибка LNK2019 #6
Суть проблемы заключается в том, что если ты выгружаешь операторы в Dll то нужно объявление __dclcpec вроде, если ты пытаешь обратиться к классу с расширением типа extern MyClass TClass находящийся в заголовочнике, то он не увидит в cpp. Решается всё через подключения lib. Свойства->Сборщик->Ввод->Дополнительные файлы и каталоги. если проблема с переменной что описал выше с классами, то надо пихать либо в глобальную область либо в пространство имён своё описывать, решение с выгрузкой в dll я сказал. Иногда можно также использовать __stdcall для вынужденного вызова.
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
04.08.2013, 10:08     Ошибка LNK2019 #7
Цитата Сообщение от DarkKelt Посмотреть сообщение
Суть проблемы заключается в том, что если ты выгружаешь операторы в Dll то нужно объявление __dclcpec вроде, если ты пытаешь обратиться к классу с расширением типа extern MyClass TClass находящийся в заголовочнике, то он не увидит в cpp. Решается всё через подключения lib. Свойства->Сборщик->Ввод->Дополнительные файлы и каталоги. если проблема с переменной что описал выше с классами, то надо пихать либо в глобальную область либо в пространство имён своё описывать, решение с выгрузкой в dll я сказал. Иногда можно также использовать __stdcall для вынужденного вызова.
А если там нет длл а просто проект с функцыями, и при попытке вызвать их в другом проекте кидает такую ошыбку? Тожэ в настройках линковку указать путь к папке проекта?
Misterkat
 Аватар для Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 83
04.08.2013, 11:39     Ошибка LNK2019 #8
Цитата Сообщение от marni Посмотреть сообщение
А если там нет длл а просто проект с функцыями, и при попытке вызвать их в другом проекте кидает такую ошыбку?
Тебе нужно добавить файлы к проекту в самой студии, иначе линковщик будет их считать левой фигней.
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
04.08.2013, 11:59     Ошибка LNK2019 #9
Цитата Сообщение от Misterkat Посмотреть сообщение
Тебе нужно добавить файлы к проекту в самой студии, иначе линковщик будет их считать левой фигней.
Ээээммммм. Вобшем такое дело: есть солюшын с 12 студии, в нем 2 проекти, один главный т.е тот где есть мэйн и второй(в нем только функцыи в стат.либ) при построении кидает такую ошыбку + лнк1120. Хотя все директории прописаны. В чем можэт быть дело?4 день мотаюсь и ничего, форуму все облазил, здесь тож писал....
Misterkat
 Аватар для Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 83
04.08.2013, 12:15     Ошибка LNK2019 #10
Цитата Сообщение от marni Посмотреть сообщение
Ээээммммм. Вобшем такое дело: есть солюшын с 12 студии, в нем 2 проекти, один главный т.е тот где есть мэйн и второй(в нем только функцыи в стат.либ) при построении кидает такую ошыбку + лнк1120. Хотя все директории прописаны. В чем можэт быть дело?4 день мотаюсь и ничего, форуму все облазил, здесь тож писал....
Вкладывал через настройки проекта или через #pragma?
ЗЫ:Попробуй писать абсолютный путь.

Добавлено через 8 минут
Да, кстате забыл сказать, ьыла у меня тоже проблема с неразрешенными внешними символами, там получилось так, что было две функции в разных классах, но назывались одинаково, в конце концов оказалось, что при очерездом вызове функции забыл впилить указатель на класс, проверь, может и у тебя такая же ошибка.
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
04.08.2013, 12:28     Ошибка LNK2019 #11
Цитата Сообщение от Misterkat Посмотреть сообщение
Вкладывал через настройки проекта или через #pragma?
ЗЫ:Попробуй писать абсолютный путь.
Через настройки проекта. Абсолютний путь - тоесть писать #инклуд с:/блабла бла?

Добавлено через 12 минут
Цитата Сообщение от Misterkat Посмотреть сообщение
Вкладывал через настройки проекта или через #pragma?
ЗЫ:Попробуй писать абсолютный путь.

Добавлено через 8 минут
Да, кстате забыл сказать, ьыла у меня тоже проблема с неразрешенными внешними символами, там получилось так, что было две функции в разных классах, но назывались одинаково, в конце концов оказалось, что при очерездом вызове функции забыл впилить указатель на класс, проверь, может и у тебя такая же ошибка.
Там только одна функцыя без классов
Misterkat
 Аватар для Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 83
04.08.2013, 12:33     Ошибка LNK2019 #12
ты писал:
Цитата Сообщение от marni Посмотреть сообщение
в нем только функцыи в стат.либ
под названием статическая библиотека подразумевается расширение *.lib, или я что-то не понимаю?
далее ты писал:
Цитата Сообщение от marni Посмотреть сообщение
Абсолютний путь - тоесть писать #инклуд с:/блабла бла?
Но ведь статические библиотеки вкладываются через:
C++
1
#pragma comment(lib, "название.lib")
Или я опять чего-то не понимаю?
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
04.08.2013, 12:47     Ошибка LNK2019 #13
Цитата Сообщение от Misterkat Посмотреть сообщение
ведь статические библиотеки вкладываются через:
C++
1
#pragma comment(lib, "название.lib")
Или я опять чего-то не понимаю?
Я не такой профи. .lib должна появитса со второго проекта, и быть использована в первом. И в настройках проекта можна выбрать директории с которых они будут подключатса.... Если есть 12 студия могу кинуть проект, так проще будет.
Misterkat
 Аватар для Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 83
04.08.2013, 12:49     Ошибка LNK2019 #14
Цитата Сообщение от marni Посмотреть сообщение
Если есть 12 студия могу кинуть проект, так проще будет.
Пожалуй да...
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
04.08.2013, 13:03     Ошибка LNK2019 #15
Цитата Сообщение от Misterkat Посмотреть сообщение
Пожалуй да...
Вот он
Вложения
Тип файла: rar sln.rar (224.3 Кб, 2 просмотров)
Misterkat
 Аватар для Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 83
04.08.2013, 13:16     Ошибка LNK2019 #16
Цитата Сообщение от marni Посмотреть сообщение
Вот он
[OFF]И стоило же столько умных слов говорить.
ЗЫ:Не виню, сам был таким.
Вложения
Тип файла: 7z Створити папку.7z (111.8 Кб, 3 просмотров)
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
04.08.2013, 14:02     Ошибка LNK2019 #17
Цитата Сообщение от Misterkat Посмотреть сообщение

Не по теме:

И стоило же столько умных слов говорить.
ЗЫ:Не виню, сам был таким.

Все заработало. Пасиб еще раз. Но еще один маленький вопрос: почему нальзя просто подключить хидер с другого проекта?
Там еще можно создать один хидер, в нем заинклудить срр файл и потом смело мож инклудить этот хидер тогда все тип топ, но все же...
Misterkat
 Аватар для Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 83
04.08.2013, 14:10     Ошибка LNK2019 #18
Цитата Сообщение от marni Посмотреть сообщение
почему нальзя просто подключить хидер с другого проекта?
Давай рассуждать логически:
Есть файл:
Test.cpp, в котором описана функция из подключенного к нему header'а.
Идем далее... Мы подключаем в совершенно левом файле header нашего Test.cpp, в котором не содержится никакого описания нужной нам функции... Далее думай сам...
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
04.08.2013, 15:43     Ошибка LNK2019 #19
Цитата Сообщение от Misterkat Посмотреть сообщение
Давай рассуждать логически:
Есть файл:
Test.cpp, в котором описана функция из подключенного к нему header'а.
Идем далее... Мы подключаем в совершенно левом файле header нашего Test.cpp, в котором не содержится никакого описания нужной нам функции... Далее думай сам...
Понятно) и последние(а то скоро офф-топ начньотса) если у меня в солюшэне много проектов(либ всяких и т.д.) и один главный(которий все это будет использовать) то как сделать так что б в нем юзались .lib & dll с других проектов без включение в него срр, тоесть дать хидер либы и использовать готовою либу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2013, 19:23     Ошибка LNK2019
Еще ссылки по теме:

C++ Ошибка LNK2019
C++ Ошибка LNK2019
Ошибка 2 error LNK2019, не пойму в чем ошибка C++

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

Или воспользуйтесь поиском по форуму:
Misterkat
 Аватар для Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 83
04.08.2013, 19:23     Ошибка LNK2019 #20
Цитата Сообщение от marni Посмотреть сообщение
то как сделать так что б в нем юзались .lib & dll с других проектов
Если честно, не совсем понял, но вроде ты про это:
В начале(там где #includ'ы) пишешь следующее:
C++
1
#pragma comment(lib, "../папка с либой/название либы.lib")
Yandex
Объявления
04.08.2013, 19:23     Ошибка LNK2019
Ответ Создать тему
Опции темы

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