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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
viktorius
2 / 2 / 2
Регистрация: 24.02.2013
Сообщений: 105
#1

Ошибка с библиотекой fltk (Ссылка на неразрешенный внешний символ) - C++

04.03.2014, 17:03. Просмотров 1325. Ответов 25
Метки нет (Все метки)

Изучаю программирование с графикой. У меня проблема выдает следующее сообщения ошибок компиляции

Код
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: static int __cdecl Fl::run(void)" (?run@Fl@@SAHXZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall Fl_Window::show(int,char * *)" (?show@Fl_Window@@QAEXHPAPAD@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall Fl_Group::end(void)" (?end@Fl_Group@@QAEXXZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "enum Fl_Labeltype __cdecl fl_define_FL_SHADOW_LABEL(void)" (?fl_define_FL_SHADOW_LABEL@@YA?AW4Fl_Labeltype@@XZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Fl_Box::Fl_Box(int,int,int,int,char const *)" (??0Fl_Box@@QAE@HHHHPBD@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Fl_Window::Fl_Window(int,int,char const *)" (??0Fl_Window@@QAE@HHPBD@Z) в функции _main
1>C:\Программирование\Си++ практик\Form 1\Debug\Form 1.exe : fatal error LNK1120: 6 неразрешенных внешних элементов
вот код программы который должен компилироваться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <Fl.H>
#include <Fl_Window.H>
#include <Fl_Box.H>
#include <iostream>
 
int main(int argc, char **argv)
{
    Fl_Window *window = new Fl_Window(300,180);
    Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
    box->box(FL_UP_BOX);
    box->labelsize(36);
    box->labelfont(FL_BOLD+FL_ITALIC);
    box->labeltype(FL_SHADOW_LABEL);
    window->end();
    window->show(argc, argv);
    return Fl::run();
}
предварительно в параметрах VS указал расположение h и lib файлов библиотеки. У меня VS 2008 и fltk 1.3.2

Подскажите в чем проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 17:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка с библиотекой fltk (Ссылка на неразрешенный внешний символ) (C++):

Ошибка: ссылка на неразрешенный внешний символ - C++
Уже час сижу не могу понять в чём дело. Получаю такие ошибки при компиляции: Файл интерфейса класса mystack.h: ...

Ошибка - ссылка на неразрешенный внешний символ - C++
Написал две программы подряд. В них выскакивает одна и та же ошибка 1&gt;------ Построение начато: проект: 4, Конфигурация: Debug Win32...

Ошибка. Ссылка на неразрешенный внешний символ - C++
Здравствуйте. Ошибка такая: LNK2019 ссылка на неразрешенный внешний символ _main в функции &quot;int __cdecl invoke_main(void)&quot;...

Ошибка: ссылка на неразрешенный внешний символ - C++
Вообщем решил я тут скачать чужой код змейки(посмотреть что да как там), вроде подключил все библиотеки opengl. Но вот не задача,...

Ошибка линковки: ссылка на неразрешенный внешний символ - C++
Всем привет. подскажите пожалуйста, в чём ошибка: error LNK2019: ссылка на неразрешенный внешний символ &quot;class...

Ошибка компоновщика: ссылка на неразрешенный внешний символ - C++
Ошибка: ссылка на неразрешенный внешний символ: в строчке: int y = SomeClass::Func(x); Почему я не понимаю. Если класс поместить в файл с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DrOffset
7090 / 4231 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
05.03.2014, 13:38 #16
THE--MASTER, Почему ж сразу ерундой? Человек учит язык по книге Страуструпа, там примеры на этой библиотеке. Ничего страшного, если он ее посмотрит. С WinAPI он еще успеет разобраться, если захочет.
THE--MASTER
Заблокирован
05.03.2014, 13:49 #17
Цитата Сообщение от DrOffset Посмотреть сообщение
Почему ж сразу ерундой? Человек учит язык по книге Страуструпа, там примеры на этой библиотеке.
потому, что Страуструп - далеко не лучший автор учебников по С++, не смотря на авторство языка, он скорее как справочник подойдёт.... А если он пользуется ещё и какой - то левой библиотекой, которую надо ещё самому собирать - то это уж совсем не для новичка.
DrOffset
7090 / 4231 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
05.03.2014, 13:59 #18
Цитата Сообщение от THE--MASTER Посмотреть сообщение
потому, что Страуструп - далеко не лучший автор учебников по С++
Субъективно.
Цитата Сообщение от THE--MASTER Посмотреть сообщение
это уж совсем не для новичка.
WinAPI - тоже с полпинка не освоить. По крайней мере база должна быть, чтобы хотя бы понять что такое обратный вызов, эвент, очередь сообщений и т.п.
viktorius
2 / 2 / 2
Регистрация: 24.02.2013
Сообщений: 105
05.03.2014, 17:39  [ТС] #19
Цитата Сообщение от DrOffset Посмотреть сообщение
WinAPI - тоже с полпинка не освоить. По крайней мере база должна быть, чтобы хотя бы понять что такое обратный вызов, эвент, очередь сообщений и т.п.
А вы можете посоветовать литературу ?
У меня есть базовые знания (я прочитал «Как программировать на С++ Х. Дейтел»‚ «Самоучитель С++ А. Васильев»‚ «Объектно-ориентированное программирование в С++ Р. Лафоре» проделал задачи, разобрался что к чему), просто я не совсем представляю какие темы изучать дальше.

Добавлено через 4 минуты
Хочу освоить графику и научиться писать оконные программы, знаю что есть WinAPI MFC MDSN и что выбрать для начала? все сразу я все равно не освою.
DrOffset
7090 / 4231 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
05.03.2014, 17:58 #20
viktorius, ну после этих книг можно и win api изучать, в принципе. Хотя это конечно полезно и интересно, но нужно знать вот что:
1) одним лишь windows мир не ограничивается.
2) новые проекты на чистом win api писать вряд ли кто сейчас станет (я говорю о полноценных программных продуктах).

По поводу литературы, смотри какое направление тебе интереснее.
По общим моментам еще неплохо бы изучить классические алгоритмы, методы и принципы разработки ПО (архитектура), тестирование.
Вот я тут список составлял, может пригодится. Судя по тому, что ты прочел, тебе надо читать с 4го пункта и ниже.

Добавлено через 5 минут
Цитата Сообщение от viktorius Посмотреть сообщение
знаю что есть WinAPI
В принципе я тоже в свое время начинал с win api, но тогда особых альтернатив и не было. Сейчас куча всяких средств, поэтому не могу сказать, что совет начинать с win api так уж однозначен. MFC тоже уже устарел достаточно сильно.

Добавлено через 4 минуты
Я просто добавлю, чтобы меня не поняли превратно, что знать win api тому, кто пишет под windows нативные приложения в любом случае надо. Я говорил именно о построении графического интерфейса с использованием одних лишь возможностей win api.
viktorius
2 / 2 / 2
Регистрация: 24.02.2013
Сообщений: 105
16.03.2014, 19:53  [ТС] #21
Решил вернуться к старой теме библиотеку fltk скомпилировал, пути прописал, Lib подключил, ранее представленный мною код скомпилировался успешно.
Но при попытке скомпилировать пример из книги Страуструпа гл 12 ст.435

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma comment(lib, "fltk.lib")
#pragma comment(lib, "wsock32.lib")
#pragma comment(lib, "comctl32.lib")
#include "c:/Программирование/Си++ практик/GUI/Simple_window.h"
#include "c:/Программирование/Си++ практик/GUI/Graph.h"
 
int main()
{
    using namespace Graph_lib;
    Point t1(100, 100);
    Simple_window win(t1, 600, 400, "ddd");
    Polygon poly;
    poly.add(Point(300,200));
    poly.add(Point(350,100));
    poly.add(Point(400,200));
    poly.set_color(Color::red);
    win.attach(poly);
    win.wait_for_button();
}
выдает ошибку

C++
1
2
3
4
5
6
7
8
9
10
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: bool __thiscall Simple_window::wait_for_button(void)" (?wait_for_button@Simple_window@@QAE_NXZ) в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall Graph_lib::Polygon::add(struct Point)" (?add@Polygon@Graph_lib@@QAEXUPoint@@@Z) в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Simple_window::Simple_window(struct Point,int,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0Simple_window@@QAE@UPoint@@HHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) в функции _main
main.obj : error LNK2001: неразрешенный внешний символ ""protected: virtual void __thiscall Graph_lib::Window::draw(void)" (?draw@Window@Graph_lib@@MAEXXZ)"
main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall Graph_lib::Shape::move(int,int)" (?move@Shape@Graph_lib@@UAEXHH@Z)"
main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall Graph_lib::Polygon::draw_lines(void)const " (?draw_lines@Polygon@Graph_lib@@UBEXXZ)"
main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall Graph_lib::Closed_polyline::draw_lines(void)const " (?draw_lines@Closed_polyline@Graph_lib@@UBEXXZ)"
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "protected: __thiscall Graph_lib::Shape::Shape(void)" (??0Shape@Graph_lib@@IAE@XZ) в функции "public: __thiscall Graph_lib::Open_polyline::Open_polyline(void)" (??0Open_polyline@Graph_lib@@QAE@XZ)
main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall Graph_lib::Open_polyline::draw_lines(void)const " (?draw_lines@Open_polyline@Graph_lib@@UBEXXZ)"
main.obj : error LNK2001: неразрешенный внешний символ ""protected: virtual void __thiscall Graph_lib::Shape::draw_lines(void)const " (?draw_lines@Shape@Graph_lib@@MBEXXZ)"
Подскажите пожалуйста как в данном случае мне определить какого файла или библиотеки не хватает?
DrOffset
7090 / 4231 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
16.03.2014, 20:05 #22
Цитата Сообщение от viktorius Посмотреть сообщение
Подскажите пожалуйста как в данном случае мне определить какого файла или библиотеки не хватает?
Надо добавить Simple_window.cpp и Graph.cpp в проект.
viktorius
2 / 2 / 2
Регистрация: 24.02.2013
Сообщений: 105
16.03.2014, 20:28  [ТС] #23
добавил, теперь вот так

C++
1
2
3
4
5
6
7
8
Graph.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Fl_GIF_Image::Fl_GIF_Image(char const *)" (??0Fl_GIF_Image@@QAE@PBD@Z) в функции "public: __thiscall Graph_lib::Image::Image(struct Point,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,enum Graph_lib::Suffix::Encoding)" (??0Image@Graph_lib@@QAE@UPoint@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@W4Encoding@Suffix@1@@Z)
Graph.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Fl_JPEG_Image::Fl_JPEG_Image(char const *)" (??0Fl_JPEG_Image@@QAE@PBD@Z) в функции "public: __thiscall Graph_lib::Image::Image(struct Point,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,enum Graph_lib::Suffix::Encoding)" (??0Image@Graph_lib@@QAE@UPoint@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@W4Encoding@Suffix@1@@Z)
main.obj : error LNK2001: неразрешенный внешний символ ""protected: virtual void __thiscall Graph_lib::Window::draw(void)" (?draw@Window@Graph_lib@@MAEXXZ)"
Simple_window.obj : error LNK2001: неразрешенный внешний символ ""protected: virtual void __thiscall Graph_lib::Window::draw(void)" (?draw@Window@Graph_lib@@MAEXXZ)"
Simple_window.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall Graph_lib::Window::attach(class Graph_lib::Widget &)" (?attach@Window@Graph_lib@@QAEXAAVWidget@2@@Z) в функции "public: __thiscall Simple_window::Simple_window(struct Point,int,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0Simple_window@@QAE@UPoint@@HHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
Simple_window.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Graph_lib::Window::Window(struct Point,int,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0Window@Graph_lib@@QAE@UPoint@@HHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) в функции "public: __thiscall Simple_window::Simple_window(struct Point,int,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0Simple_window@@QAE@UPoint@@HHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
Simple_window.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall Graph_lib::Button::attach(class Graph_lib::Window &)" (?attach@Button@Graph_lib@@UAEXAAVWindow@2@@Z)"
C:\Программирование\Си++ практик\form 5\Debug\form 5.exe : fatal error LNK1120: 6 неразрешенных внешних элементов
Добавлено через 3 минуты
включил все либ файлы через директиву прагма, теперь вот так

C++
1
2
3
4
5
6
main.obj : error LNK2001: неразрешенный внешний символ ""protected: virtual void __thiscall Graph_lib::Window::draw(void)" (?draw@Window@Graph_lib@@MAEXXZ)"
Simple_window.obj : error LNK2001: неразрешенный внешний символ ""protected: virtual void __thiscall Graph_lib::Window::draw(void)" (?draw@Window@Graph_lib@@MAEXXZ)"
Simple_window.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall Graph_lib::Window::attach(class Graph_lib::Widget &)" (?attach@Window@Graph_lib@@QAEXAAVWidget@2@@Z) в функции "public: __thiscall Simple_window::Simple_window(struct Point,int,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0Simple_window@@QAE@UPoint@@HHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
Simple_window.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Graph_lib::Window::Window(struct Point,int,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0Window@Graph_lib@@QAE@UPoint@@HHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) в функции "public: __thiscall Simple_window::Simple_window(struct Point,int,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0Simple_window@@QAE@UPoint@@HHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
Simple_window.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall Graph_lib::Button::attach(class Graph_lib::Window &)" (?attach@Button@Graph_lib@@UAEXAAVWindow@2@@Z)"
C:\Программирование\Си++ практик\form 5\Debug\form 5.exe : fatal error LNK1120: 4 неразрешенных внешних элементов
DrOffset
7090 / 4231 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
16.03.2014, 20:55 #24
viktorius, не надо все lib. Надо понять зачем это все делается.
Включить в проект надо еще Window.cpp и GUI.cpp.
У тебя отсутствует реализация классов из примера. Ее надо добавить, смотришь определение функции в этих файлах и определяешь какой надо подключить...
viktorius
2 / 2 / 2
Регистрация: 24.02.2013
Сообщений: 105
17.03.2014, 08:31  [ТС] #25
Все теперь работает. А как вы определили что именно этих реализаций не хватает?

Добавлено через 4 минуты
чтоб мне больше таких вопросов не задавать
DrOffset
7090 / 4231 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
17.03.2014, 13:08 #26
viktorius, прочитал сообщение об ошибке и посмотрел в каком файле лежит реализация... все файлы лежат на сайте Страуструпа, там и смотрел.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2014, 13:08
Привет! Вот еще темы с ответами:

Ошибка LNK2019 ссылка на неразрешенный внешний символ - C++
Переделывала целочисленнный Список в шаблон + добавила итераторы. но выходят эти ошибки,пофиксить не получается Ошибка LNK2019 ссылка...

Ошибка LNK2019 | Ссылка на неразрешенный внешний символ - C++
Всем добрый день! При компиляции возникает ошибка LNK2019, не могу самостоятельно её отыскать. Помогите, пожалуйста, разобраться. ...

Ошибка LNK2019 ссылка на неразрешенный внешний символ - C++
В заголовочном файле объявлен класс class cLogReader { public: cLogReader(int i) { }; ~cLogReader();

Ошибка LNK2019: ссылка на неразрешенный внешний символ - C++
Уже который день не могу разобраться с этой проблемой! У меня есть класс Agent, с данными name, age и experience. Для того, чтобы...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.03.2014, 13:08
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru