我正在尝试将 SFML 和 TGUI 库集成到我的 C++ 项目中。虽然 SFML 工作得很好,但我在使用 TGUI 时遇到了问题。
我仔细按照 TGUI 网站上的安装说明进行操作,添加必要的目录并在 Visual Studio 中设置适当的属性。但是,运行以下代码时出现错误:
#include <SFML/Graphics.hpp>
#include <TGUI/TGUI.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(800, 600), "TGUI Example");
tgui::Gui gui(window);
// Other GUI setup code here
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
gui.handleEvent(event);
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
gui.draw();
window.display();
}
return 0;
}
我已经仔细检查了 TGUI 库是否正确包含,但我不知道可能会出现什么问题。
有人有什么建议或解决方案吗?
我几乎尝试了一切。仔细检查我是否粘贴了正确的目录(我根据 TGUI 安装指南进行了操作),并且 Visual Studio 项目包含属性(也是正确的),但此错误似乎并没有消失。
编辑:我检查过,错误消息来自 Visual Studio 中的 IntelliSense。确切的错误消息是:
Severity: Code
Description: Namespace "tgui" does not have a member "Gui".
Project: PhyEng
File: C:\Users\Admin\Desktop\RandProj\PhyEng\PhyEng\Main.cpp
Line: 7
构建日志最后有以下内容:
The build started at 17:37...
1>------ Build started: Project: PhyEng, Configuration: Debug x64 ------
1>Main.cpp
1>C:\Users\Admin\Desktop\RandProj\PhyEng\PhyEng\Main.cpp(9,11): error C2039: 'Gui' is not a member of 'tgui'.
1> C:\Users\Admin\Desktop\RandProj\PhyEng\include-tgui\TGUI\Widgets\VerticalLayout.hpp(32,30):
1> See declaration of 'tgui'
1>C:\Users\Admin\Desktop\RandProj\PhyEng\PhyEng\Main.cpp(9,11): error C2065: 'Gui': undeclared identifier
1>C:\Users\Admin\Desktop\RandProj\PhyEng\PhyEng\Main.cpp(9,15): error C2146: syntax error: missing ';' before identifier 'gui'
1>C:\Users\Admin\Desktop\RandProj\PhyEng\PhyEng\Main.cpp(9,15): error C3861: 'gui': identifier not found.
1>C:\Users\Admin\Desktop\RandProj\PhyEng\PhyEng\Main.cpp(15,5): error C2065: 'gui': undeclared identifier
1>C:\Users\Admin\Desktop\RandProj\PhyEng\PhyEng\Main.cpp(20,5): error C2065: 'gui': undeclared identifier
1>C:\Users\Admin\Desktop\RandProj\PhyEng\PhyEng\Main.cpp(34,13): error C2065: 'gui': undeclared identifier
1>C:\Users\Admin\Desktop\RandProj\PhyEng\PhyEng\Main.cpp(38,9): error C2065: 'gui': undeclared identifier
1>The build of the project 'PhyEng.vcxproj' is complete -- ERROR.
问题已解决:解决方案:
#include <TGUI/Backend/SFML-Graphics.hpp>
来自 TGUI 文档:https://tgui.eu/documentation/0.9/classtgui_1_1GuiSFML.html 和示例 SFML 程序 https://tgui.eu/tutorials/latest-stable/backend-sfml-graphics/您似乎缺少一个包含内容。
请添加:
#include <TGUI/Backend/SFML-Graphics.hpp>
您的包含内容。
最小的 SFML 程序如下:
#include <TGUI/TGUI.hpp>
#include <TGUI/Backend/SFML-Graphics.hpp>
int main()
{
sf::RenderWindow window{{800, 600}, "TGUI example - SFML_GRAPHICS backend"};
tgui::Gui gui{window};
gui.mainLoop(); // See below for how to use your own main loop
}