Помогите с упражнением из книги Страуструпа?

Я пытаюсь скомпилировать пример из книги страуструпа, вот его код:

#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

не знаю почему, но это работает

→ Ссылка