Помогите с упражнением из книги Страуструпа?
Я пытаюсь скомпилировать пример из книги страуструпа, вот его код:
#include "Simple_window.h"
#include "Graph.h"
int main()
{
using namespace Graph_lib;
Point tl{100, 100};
Simple_window win{tl, 600, 400, "Canvas"};
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();
}
Вот как я компилирую: semyonzhuravlev@MacBook-Air Chapter12-DisplayModel % clang++ -std=c++20 -I/opt/homebrew/Cellar/fltk/1.3.9/include -L/opt/homebrew/Cellar/fltk/1.3.9/lib -lfltk test.cpp Simple_window.cpp Graph.cpp GUI.cpp Window.cpp -o test
И получаю следующую ошибку:
Undefined symbols for architecture arm64: "Fl_GIF_Image::Fl_GIF_Image(char const*)", referenced from: Graph_lib::Image::Image(Point, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator>, Graph_lib::Suffix::Encoding) in Graph-b3e354.o "Fl_JPEG_Image::Fl_JPEG_Image(char const*)", referenced from: Graph_lib::Image::Image(Point, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator>, Graph_lib::Suffix::Encoding) in Graph-b3e354.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я всё проверил: файлы Fl_GIF_Image.H и Fl_JPEG_Image.H у меня есть. Подскажите, пожалуйста, как можно решить данную проблему?
Я пробовал переустанавливать fltk, но это безуспешно.
Ответы (1 шт):
я смог решить данный вопрос
скомпилировал следующим образом:
g++ -std=c++20
-I/opt/homebrew/Cellar/fltk/1.3.9/include
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT
-L/opt/homebrew/Cellar/libpng/1.6.43/lib
-L/opt/homebrew/Cellar/jpeg/9f/lib
-L/opt/homebrew/Cellar/fltk/1.3.9/lib
-lpng -ljpeg -lfltk -lpthread -framework Cocoa
-lfltk_images
example.cpp Simple_window.cpp Graph.cpp GUI.cpp Window.cpp
-o example
не знаю почему, но это работает