如何解决ImGui for SDL2 C++ Visual Studio 未解析的外部
首先,我知道什么是未解决的外部错误,因此我在这里询问为什么来自 ImGui 的文件没有将其声明的函数链接到 cpp 中这些函数的定义。我不应该接触的两个文件没有链接,我收到外部错误
我正在开发一个使用 SDL2 而没有 openGL 实现的引擎。这是一个不会使用图形的应用程序,我只需要SDL2打开一个窗口,我将在其中使用ImGUI等。
所以当我尝试将 ImGui 包含在我的 sln 中时,问题就开始了。
我有:
DocA.cpp
在本文档中,我在 DOC_MAIN.cpp 中调用了不同的函数。这些函数遵循一般的应用程序架构:Init(),Start() PreUpdate() Update() postUpdate() clean()。
按照 SDL2 ImGui 示例,我开始在这些不同的函数中添加代码,以便在不同的阶段执行它。就在我确定我在创建 sdl2 窗口时遵循示例没有任何问题时,我开始为 ImGui 编写初始化代码。这在具有这两个函数的示例中显示:
// Setup Platform/Renderer backends
ImGui_ImplSDL2_InitForOpenGL(App->window->window,App->window->gl_context);
ImGui_ImplOpenGL2_Init();
为了使用这两个函数,在我的文档顶部包含 Imgui.h 是不够的。实际上,实现了 ImGui 的示例文档就是使用这个包括:
#include "imgui.h"
#include "imgui_impl_sdl.h"
#include "imgui_impl_opengl2.h"
这两个包含对于使用显示的这两个函数很重要。文档的孔代码如下所示:
#include "ModuleImGui.h"
#include "..\imgui-1.83\imgui.h"
#include "..\imgui-1.83\backends\imgui_impl_opengl2.h"
#include "..\imgui-1.83\backends\imgui_impl_sdl.h"
#include <SDL.h>
#include <SDL_opengl.h>
#include "App.h"
bool ModuleImGui::Init() {
bool ret = true;
printf("ModuleImGui Init()\n");
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();//1
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
////ImGui::StyleColorsClassic();
// Setup Platform/Renderer backends
ImGui_ImplSDL2_InitForOpenGL(App->window->window,App->window->gl_context);
ImGui_ImplOpenGL2_Init();
return ret;
}
检查是否在不同的文档中多次添加像 ImGui 这样的标题,这可能会导致外部错误。
将所有 ImGui 文档添加到我的解决方案中,包括这两个给我错误的函数的标题和 cpp。
从我的解决方案中删除了所有 ImGui 文档,只包含绝对路径...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。