未定义的参考错误

时间:2014-02-14 04:18:58

标签: c++ qt g++

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

我想要使用的头文件位于名为StanfordCPPLibrary的库中。

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

从我到目前为止的理解;这是一个链接器错误。如果有人能够指出错误是什么以及它为什么会引起我也可以学习,我将非常感激。 :)

嗨,

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

我想要使用的头文件位于名为StanfordCPPLibrary的库中。

gwindow.h文件是StanfordCPPLibrary的一部分。

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

从我到目前为止的理解;这是一个链接器错误。如果有人能够指出错误是什么以及它为什么会引起我也可以学习,我将非常感激。 :)

/*
* 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:\Qt\Qt5.2.0\Tools\mingw48_32\lib\gcc\i686-w64-  mingw32\4.8.0\include\StanfordCPPLib\

2 个答案:

答案 0 :(得分:0)

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

LIBS += -LPath\TO\LIB -lnameOfLib

这将告诉链接器要链接的内容以及在何处查找库。在库的名称中省略扩展名。

对于使用源,您需要将源(.cpp .h)复制到项目文件夹或子文件夹(或将其位置添加到源路径)并将它们包含在SOURCES和HEADERS中,或将它们添加为子项目,从而创建然后将链接的目标文件。如果使用子项目,则在原始.pro文件中包含子项目.pri文件。在http://doc.qt.digia.com/qtcreator/creator-project-creating.html

有一个关于“Subdir项目”的区块

答案 1 :(得分:0)

我已使用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 release\main.o ..\Chap5\main.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 release\gwindow.o ..\Chap5\gwindow.cpp