因为没有关于如何设置ImGui&的实际教程。 SDL2,我来这里寻找答案。
我只需要将ImGui文件粘贴到我的include文件夹中即可设置好吗?至少,这是ImGui自述文件所说的内容。
当我尝试这个时:
git svn fetch
我有这个错误:
ImGui::Begin("test");
当我开始写'i'时,代码块会使用ImGui函数自动填充我。当我做#include其他文件(ImGui_draw等等)时,我只得到了重新定义的问题。
=>这就是为什么我的问题与已经回答的以下问题有所不同:
undefined reference to `ImGui::Begin(char const*, bool*, int)
所以请不要关闭这个问题。我现在正在寻找2天的解决方案,这里的问题是我唯一的解决方案。如果这个问题被关闭,我将不得不放弃ImGui ..我真的很无能。
这个错误可能是由于与SDL2的opengl发生冲突吗?但在这种情况下,不应该只是程序崩溃吗?
编辑:现在这个错误已经解决了(我曾经使用过一个IDE,它包含了我的include文件夹中的文件,我不知道代码块没有),我的程序启动但没有任何与ImGui相关的事情(正如预期的那样,我还没想出如何混合SDL2和ImGui)和现在当我退出SDL2窗口时发生另一个错误:< /强>
程序崩溃并在控制台中显示以下内容:
What is an undefined reference/unresolved external symbol error and how do I fix it?
一些随机睾丸:如果我在主循环之前使用ImGui,它会在那里崩溃。循环内部相同。
答案 0 :(得分:2)
我只需将ImGui文件粘贴到我的include文件夹中即可正确设置吗?
没有。您的应用程序需要头文件才能查看有效编译的符号。但在链接期间,这些符号实际上需要存在,并且添加单个头文件不会添加它们。您需要将所有源文件(cpp文件及其相应的头文件)放入您的应用程序并将它们一起编译。
构建C ++应用程序有两个主要阶段:编译和链接。标题路径包含编译阶段的所有信息,但不包含链接。只有实际的源文件(不是头文件)才能包含定义标头中声明的内容所需的符号。如果你也没有添加,那么你的符号就没有定义,这就解释了你的错误。
当我开始写代码时,代码块会使用ImGui函数自动填充 的 'i'。
那是因为你包含了头文件,这是该过程的一部分。
我只有重新定义的问题。
如果你这样做,请不要将#include
与任何.cpp文件一起使用,只使用头文件。如果您在多个地方#include cpp文件,您肯定会收到多个定义错误,如您所示。
答案 1 :(得分:0)
ImGui是一个可以轻松复制的文件中的自包含文件 并编译到您的应用程序/引擎中:
- imgui.cpp
- imgui.h
- imgui_demo.cpp
- imgui_draw.cpp
- imgui_internal.h
- imconfig.h(默认为空,用户可编辑)
- stb_rect_pack.h
- stb_textedit.h
- stb_truetype.h
因此,您不需要imgui.h
标头,您需要所有这些文件,负责将cpp
文件编译并链接到您的可执行文件中。