ImGui,SDL2&代码块,努力设置

时间:2017-05-17 08:54:09

标签: c++

因为没有关于如何设置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,它会在那里崩溃。循环内部相同。

2 个答案:

答案 0 :(得分:2)

  

我只需将ImGui文件粘贴到我的include文件夹中即可正确设置吗?

没有。您的应用程序需要头文件才能查看有效编译的符号。但在链接期间,这些符号实际上需要存在,并且添加单个头文件不会添加它们。您需要将所有源文件(cpp文件及其相应的头文件)放入您的应用程序并将它们一起编译。

构建C ++应用程序有两个主要阶段:编译和链接。标题路径包含编译阶段的所有信息,但不包含链接。只有实际的源文件(不是头文件)才能包含定义标头中声明的内容所需的符号。如果你也没有添加,那么你的符号就没有定义,这就解释了你的错误。

  

当我开始写代码时,代码块会使用ImGui函数自动填充   的 'i'。

那是因为你包含了头文件,这是该过程的一部分。

  

我只有重新定义的问题。

如果你这样做,请不要将#include与任何.cpp文件一起使用,只使用头文件。如果您在多个地方#include cpp文件,您肯定会收到多个定义错误,如您所示。

答案 1 :(得分:0)

引自imgui's README

  

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文件编译并链接到您的可执行文件中。