0

Нужно подключить SFML (уже подключил и все работает (статический SFML)), ImGui и ImGui-SFML. Устанавливал по этой инструкции (ImGui-SFML): https://github.com/SFML/imgui-sfml#integrating-into-your-project-manually

Я все сделал и остановился на 6 шаге (последнем), команда запуска получилась такая: g++ test.cpp -o test.exe -std=c++11 -Wall -DSFML_STATIC -I SFML\include\ -I imgui\include\ -L SFML\lib -lsfml-graphics-s -lsfml-window-s -lsfml-system-s -lopengl32 -lwinmm -lgdi32 -lfreetype imgui\include\imgui.cpp imgui\include\imgui_widgets.cpp imgui\include\imgui_tables.cpp

Код:

#include "SFML/Graphics.hpp"

#include "imgui/include/imgui.h" #include "imgui/include/imgui-SFML.h"

int main(void) { sf::RenderWindow window(sf::VideoMode(800, 800), "SFML Window.");

ImGui::SFML::Init(window);

sf::RectangleShape rectangle(sf::Vector2f(20, 20));

rectangle.setPosition(10, 10);

rectangle.setRotation(40);

sf::Clock clock;

while(window.isOpen()) {
    sf::Event event;

    while(window.pollEvent(event)) {
        // ImGui::SFML::ProcessEvent(event);

        if(event.type == sf::Event::Closed) {
            window.close();
        }
    }

    ImGui::SFML::Update(window, clock.restart());

    ImGui::Begin("Simple window.");

    if (ImGui::Button("Rotate")) {
        rectangle.rotate(1);
    }

    ImGui::End();

    window.clear(sf::Color::Black);

    ImGui::SFML::Render(window);

    window.draw(rectangle);

    window.display();
}

return 0;

}

После запуска команды выводится куча ошибок на подобии:

 C:\Users\IonE\AppData\Local\Temp\ccYUSwCf.o:test.cpp:(.text+0x113): undefined reference to `ImGui::SFML::Init(sf::RenderWindow&, bool)'
 C:\Users\IonE\AppData\Local\Temp\ccKXGNOi.o:imgui.cpp:(.text+0xd97): undefined reference to `ImGui::StyleColorsDark(ImGuiStyle*)'
 C:\Users\IonE\AppData\Local\Temp\ccZaJayX.o:imgui_widgets.cpp:(.text+0x4af3): undefined reference to `ImDrawList::AddCircle(ImVec2 const&, float, unsigned int, int, float)'

Как правильно подключить эту библиотеку?

user7860670
  • 29,796
sad
  • 105
  • Add imgui-SFML.cpp to your build/project Но вообще конечно лучше собирайте отдельно, а потом линкуйте. И за порядком следования аргументов следите - линкуемые библиотеки должны следовать после единиц трансляции, использующих символы из них. – user7860670 Aug 09 '23 at 17:50

0 Answers0