0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 7
1

Ошибка LNK2019

17.07.2013, 18:22. Показов 2481. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создается библиотека 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 минуты
Как понимаю помочь никто не может?!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2013, 18:22
Ответы с готовыми решениями:

Ошибка 2 error LNK2019, не пойму в чем ошибка
Выдает такую ошибку: Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl...

ошибка LNK2019
доброго времени суток, у меня возникает какая-то непонятная ошибка в следующем коде: #include...

Ошибка LNK2019
Я только знакомлюсь с c++. Помогите пожалуйста разобраться. Есть такой класс: #pragma once...

Ошибка LNK2019
#include <string> using namespace std; class Language { public: Language() {}; void...

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

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

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

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

Не по теме:

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

Все заработало. Пасиб еще раз. Но еще один маленький вопрос: почему нальзя просто подключить хидер с другого проекта?
Там еще можно создать один хидер, в нем заинклудить срр файл и потом смело мож инклудить этот хидер тогда все тип топ, но все же...
0
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 84
04.08.2013, 14:10 18
Цитата Сообщение от marni Посмотреть сообщение
почему нальзя просто подключить хидер с другого проекта?
Давай рассуждать логически:
Есть файл:
Test.cpp, в котором описана функция из подключенного к нему header'а.
Идем далее... Мы подключаем в совершенно левом файле header нашего Test.cpp, в котором не содержится никакого описания нужной нам функции... Далее думай сам...
0
2 / 2 / 1
Регистрация: 17.04.2013
Сообщений: 68
04.08.2013, 15:43 19
Цитата Сообщение от Misterkat Посмотреть сообщение
Давай рассуждать логически:
Есть файл:
Test.cpp, в котором описана функция из подключенного к нему header'а.
Идем далее... Мы подключаем в совершенно левом файле header нашего Test.cpp, в котором не содержится никакого описания нужной нам функции... Далее думай сам...
Понятно) и последние(а то скоро офф-топ начньотса) если у меня в солюшэне много проектов(либ всяких и т.д.) и один главный(которий все это будет использовать) то как сделать так что б в нем юзались .lib & dll с других проектов без включение в него срр, тоесть дать хидер либы и использовать готовою либу
0
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 84
04.08.2013, 19:23 20
Цитата Сообщение от marni Посмотреть сообщение
то как сделать так что б в нем юзались .lib & dll с других проектов
Если честно, не совсем понял, но вроде ты про это:
В начале(там где #includ'ы) пишешь следующее:
C++
1
#pragma comment(lib, "../папка с либой/название либы.lib")
0
04.08.2013, 19:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2013, 19:23
Помогаю со студенческими работами здесь

LNK2019 ошибка
Здравствуйте! Есть такая проблема, и уже долго не могу понять, в чём тут дело... При компиляции...

Ошибка LNK2019
Здравствуйте, уважаемые программисты! Обращаюсь к Вам потому, что в моей первой программе с...

Ошибка LNK2019
Всех с наступающим. Бьюсь на единственной ошибкой линковщика в коде. Сама ошибка похоже в...

Ошибка LNK2019
Добрый день. Недавно начала изучать С++ (необходимо для научной деятельности). Программирую я в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru