未定义的引用错误

Undefined Reference Error

本文关键字:错误 引用 未定义      更新时间:2023-10-16

我正在尝试使用Qt Creator中不属于c++库的头文件和源文件。

我尝试使用的头文件在一个名为StanfordCPPLibrary的库中。

每次我尝试使用中的函数时,都会得到一个未定义的引用错误。在网上研究之后;我试图将正确的SOURCES、LIBS添加到.pro文件中——每次我都收到不同的错误(如果需要,我可以在这里发布它们)。

从我目前的理解来看;这是一个链接器错误。如果有人能指出错误是什么以及为什么会造成错误,我将不胜感激,以便我也能学习。:)

你好,

我正在尝试使用Qt Creator中不属于c++库的头文件和源文件。

我尝试使用的头文件在一个名为StanfordCPPLibrary的库中。

gwindow.h文件是StanfordCPL库的一部分。

每次我尝试使用中的函数时,都会得到一个未定义的引用错误。

从我目前的理解来看;这是一个链接器错误。如果有人能指出错误是什么以及为什么会造成错误,我将不胜感激,以便我也能学习。:)

/*
* File: Rainbow.cpp
* --------------------------------------
* This program creates a rainbow that occupies a percentage of the screen chosen by the      end user
*/

#include <iostream>
#include "gwindow.h"

/*Function Prototype*/
void drawRainbow(GWindow & gw);
int main ()
{
GWindow gw;
drawRainbow(gw);
return 0;
}
void drawRainbow(GWindow & gw)
{
gw.drawRect(2, 2, 5, 5);
}

这是项目文件:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
INCLUDEPATH = C:QtQt5.2.0Toolsmingw48_32libgcci686-w64-  mingw324.8.0includeStanfordCPPLib

要使用库,请将以下内容添加到您的专业文件中:

LIBS += -LPathTOLIB -lnameOfLib

这将告诉链接器链接什么以及在哪里可以找到库。在库的名称中省略扩展名。

要使用源,您需要将源(.cpp.h)复制到项目文件夹或子文件夹中(或将其位置添加到源路径中),并将其包含在sources和HEADERS中,或将其作为子项目添加,从而创建将被链接的对象文件。如果使用子项目,请将子项目.pri文件包含在原始.pro文件中。上有一个关于"Subdir Projects"的块http://doc.qt.digia.com/qtcreator/creator-project-creating.html

我已经用gwindow.cpp文件更新了我的项目文件夹。因此,要添加的唯一源文件是gwindow.cpp文件。我再次构建了源代码,并收到了相同的未定义引用错误——其中81个。以下是makefile.release在编译部分显示的内容。

####### Compile
release/main.o: ../Chap5/main.cpp ../Chap5/StanfordCPPLib/gwindow.h 
../Chap5/StanfordCPPLib/gtypes.h 
../Chap5/StanfordCPPLib/vector.h 
../Chap5/StanfordCPPLib/foreach.h 
../Chap5/StanfordCPPLib/strlib.h 
../Chap5/StanfordCPPLib/console.h 
../Chap5/StanfordCPPLib/private/main.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o releasemain.o ..Chap5main.cpp
release/gwindow.o: ../Chap5/gwindow.cpp ../Chap5/StanfordCPPLib/gevents.h 
../Chap5/StanfordCPPLib/gtimer.h 
../Chap5/StanfordCPPLib/gwindow.h 
../Chap5/StanfordCPPLib/gtypes.h 
../Chap5/StanfordCPPLib/vector.h 
../Chap5/StanfordCPPLib/foreach.h 
../Chap5/StanfordCPPLib/strlib.h 
../Chap5/StanfordCPPLib/console.h 
../Chap5/StanfordCPPLib/private/main.h 
../Chap5/StanfordCPPLib/gobjects.h 
../Chap5/StanfordCPPLib/gmath.h 
../Chap5/StanfordCPPLib/map.h 
../Chap5/StanfordCPPLib/stack.h 
../Chap5/StanfordCPPLib/platform.h 
../Chap5/StanfordCPPLib/sound.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o releasegwindow.o ..Chap5gwindow.cpp