如何正确安装ImGui? 我对C++很陌生,但我知道其他几种语言(比如python,java,一个小C)。问题是,当我编译代码并试图打开一个新的ImGui窗口时,会出现“未定义引用”错误。我想这是我如何设置文件的问题。我的main.cpp文件和imgui库都在同一个目录中,当我尝试使用“#include”imgui/imgui.h”导入该文件时,仍然会出现未定义的引用错误。我试图将所有的.h和.cpp文件从imgui文件夹中取出,并放入与我的“Main.cpp”文件相同的目录中,但它仍然给我一个未定义的引用错误。我已经阅读了安装说明,其中您将.cpp文件放入了工作目录,但它仍然无法工作,并给了我相同的错误。任何帮助都将不胜感激。 --------------------------------------------麦可德-------------------------------------------- #include <iostream> using namespace std; #include "imgui/imgui.h" int main(){ ImGui::Begin("Window"); ImGui::End(); } /tmp/ccMXHI3r.o: In function `main': Main.cpp:(.text+0x16): undefined reference to `ImGui::Begin(char const*, bool*, int)' collect2: error: ld returned 1 exit status imgui // imgui library folder that i downloaded from github Main.cpp // my cpp file where my code is

如何正确安装ImGui? 我对C++很陌生,但我知道其他几种语言(比如python,java,一个小C)。问题是,当我编译代码并试图打开一个新的ImGui窗口时,会出现“未定义引用”错误。我想这是我如何设置文件的问题。我的main.cpp文件和imgui库都在同一个目录中,当我尝试使用“#include”imgui/imgui.h”导入该文件时,仍然会出现未定义的引用错误。我试图将所有的.h和.cpp文件从imgui文件夹中取出,并放入与我的“Main.cpp”文件相同的目录中,但它仍然给我一个未定义的引用错误。我已经阅读了安装说明,其中您将.cpp文件放入了工作目录,但它仍然无法工作,并给了我相同的错误。任何帮助都将不胜感激。 --------------------------------------------麦可德-------------------------------------------- #include <iostream> using namespace std; #include "imgui/imgui.h" int main(){ ImGui::Begin("Window"); ImGui::End(); } /tmp/ccMXHI3r.o: In function `main': Main.cpp:(.text+0x16): undefined reference to `ImGui::Begin(char const*, bool*, int)' collect2: error: ld returned 1 exit status imgui // imgui library folder that i downloaded from github Main.cpp // my cpp file where my code is,c++,imgui,C++,Imgui,-------------------------------我的工作目录----------------------- #include <iostream> using namespace std; #include "imgui/imgui.h" int main(){ ImGui::Begin("Window"); ImGui::End(); } /tmp/ccMXHI3r.o: In function `main

-------------------------------我的工作目录-----------------------

#include <iostream>
using namespace std;

#include "imgui/imgui.h"

int main(){
    ImGui::Begin("Window");
    ImGui::End();
}
/tmp/ccMXHI3r.o: In function `main':
Main.cpp:(.text+0x16): undefined reference to `ImGui::Begin(char const*, bool*, int)'
collect2: error: ld returned 1 exit status
imgui       // imgui library folder that i downloaded from github
Main.cpp    // my cpp file where my code is

问题似乎是缺少链接步骤,您需要告诉编译/链接过程链接到imgui库。
当您在C/C++中包含头时,您只是让编译器知道函数和其他声明的签名。 然后,您需要让您的链接器知道在哪里查找代码,这将告诉它链接到库

例如,使用gcc,您可以通过以下调用进行编译+链接:

gcc foo.c -o foo -ldynLib
该示例将编译源代码“foo.c”,并为此生成一个对象,并将其与动态库“dynlib”链接成最终的二进制文件“foo”(可执行文件)

在您的情况下,可能是这样的:

gcc Main.cpp -o program -limgui

当然,标志和步骤将取决于编译器/链接器,您还应该检查库的实际名称(imgui只是一个猜测,因为我不知道该库)

您使用的是什么构建系统?请尝试了解C++程序的编译过程。头文件对编译器来说并不重要,如果可以打开它们,.cpp文件是单独编译并链接在一起的。未定义的引用通常意味着您忘记编译和链接.cpp文件。在本例中,imgui.cpp.我使用的是Ubuntu18.04LTS,我刚刚检查了Ubuntu软件中心,它没有。如果这就是你说的。不,我是问你是如何编译你的程序的。您是否使用make、cmake或类似VScode或Eclipse的IDE?我相信编译C++与外文包对初学者来说是不友好的,如果你来自Python或java背景,他们的奇特模块,所以获得错误是很正常的。你可能想看看这个:我一直在使用VS代码和扩展代码流派和微软C++。