我对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 statusimgui // imgui library folder that i downloaded from github
Main.cpp // my cpp file where my code is发布于 2020-09-18 04:47:05
问题似乎是缺少链接步骤,你需要告诉你的编译/链接过程链接到imgui库。
当您在C/C++中包含一个头文件时,您只是让编译器知道函数和其他声明的签名。然后,您需要让您的链接器知道在哪里查找代码,这将告诉它链接到库。
例如,对于gcc,您可以使用以下调用进行编译+链接:
gcc foo.c -o foo -ldynLib该示例将编译源代码'foo.c',将为其生成一个对象,并将其与动态库'dynlib‘链接到最终的二进制文件'foo’(可执行文件)中。
在您的例子中,它可能是这样的:
gcc Main.cpp -o program -limgui当然,标志和步骤将取决于你的编译器/链接器,你也应该检查库的实际名称(imgui只是一个猜测,因为我不知道那个库)
https://stackoverflow.com/questions/63944606
复制相似问题