微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ImGui for SDL2 C++ Visual Studio 未解析的外部

如何解决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;

}

external errors image

这两个函数给了我外部错误。我这样做是为了解决它:

检查是否在不同的文档中多次添加像 ImGui 这样的标题,这可能会导致外部错误

将所有 ImGui 文档添加到我的解决方案中,包括这两个给我错误函数标题和 cpp。

从我的解决方案中删除了所有 ImGui 文档,只包含绝对路径...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。