Нужно подключить 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)'
Как правильно подключить эту библиотеку?
Add imgui-SFML.cpp to your build/projectНо вообще конечно лучше собирайте отдельно, а потом линкуйте. И за порядком следования аргументов следите - линкуемые библиотеки должны следовать после единиц трансляции, использующих символы из них. – user7860670 Aug 09 '23 at 17:50