在 QTCreator 未定义参考中使用库 [英] Using Library In QTCreator Undefined Reference
问题描述
我正在构建自己的函数库,用于帮助我学习 C++.我正在尝试一个简单的 QT 应用程序,当我运行该应用程序时,出现未定义的错误.不知道我做错了什么,这可能是个菜鸟.
I am building my own library of functions I use to help me learn C++. I am attempting a simple QT application and when I run the app I get an undefined error. Not sure what I am doing wrong, and its probably a noob thing.
库文件
CC_Number.h
CC_Number.h
#ifndef CC_NUMBER_H
#define CC_NUMBER_H
#include <string>
using namespace std;
class CC_Number
{
public:
CC_Number();
virtual ~CC_Number();
int randCC(int imin=0, int imax=1);
int arraySize(int x[]);
int arraySize(double x[]);
int arraySize(float x[]);
int arraySize(string x[]);
string int_to_str(int i);
protected:
private:
};
#endif // CC_NUMBER_H
CC_Number.cpp
CC_Number.cpp
#include "CC_Number.h"
#include <sstream>
using namespace std;
CC_Number::CC_Number()
{
//ctor
}
CC_Number::~CC_Number()
{
//dtor
}
string CC_Number::int_to_str(int i){
stringstream ss;
ss << i;
string str = ss.str();
return str;
}
调用库的代码
Animal_Birthdate.h
Animal_Birthdate.h
#ifndef ANIMAL_BIRTHDATE_H
#define ANIMAL_BIRTHDATE_H
#include "/home/mongo/Cpp/CC_Cpp/CC_Number.h"
#include <iostream>
#include <string>
using namespace std;
class Animal_Birthdate
{
public:
Animal_Birthdate();
Animal_Birthdate(int m, int d, int y);
string getBirthdate();
private:
int intMonth;
int intDay;
int intYear;
};
#endif // ANIMAL_BIRTHDATE_H
Animal_Birthdate.cpp
Animal_Birthdate.cpp
#include "animal_birthdate.h"
#include "/home/mongo/Cpp/CC_Cpp/CC_Number.h"
#include <iostream>
#include <string>
using namespace std;
Animal_Birthdate::Animal_Birthdate()
:intMonth(1), intDay(1), intYear(1)
{
}
Animal_Birthdate::Animal_Birthdate(int m, int d, int y)
:intMonth(m), intDay(d), intYear(y)
{
}
string Animal_Birthdate::getBirthdate()
{
CC_Number c;
string bd = c.int_to_str(intMonth);
return bd;
}
我收到的错误/home/mongo/Cpp/CC_Herd_Manager/animal_birthdate.o:-1: 在函数`Animal_Birthdate::getBirthdate()'中:
Errors I am Receiving /home/mongo/Cpp/CC_Herd_Manager/animal_birthdate.o:-1: In function `Animal_Birthdate::getBirthdate()':
/home/mongo/Cpp/CC_Herd_Manager/animal_birthdate.cpp:-1: 错误:未定义对`CC_Number::CC_Number()'的引用
/home/mongo/Cpp/CC_Herd_Manager/animal_birthdate.cpp:-1: error: undefined reference to `CC_Number::CC_Number()'
/home/mongo/Cpp/CC_Herd_Manager/animal_birthdate.cpp:-1: 错误:未定义对`CC_Number::int_to_str(int)'的引用
/home/mongo/Cpp/CC_Herd_Manager/animal_birthdate.cpp:-1: error: undefined reference to `CC_Number::int_to_str(int)'
CC_Cpp.pro 的内容
Contents of CC_Cpp.pro
#-------------------------------------------------
#
# Project created by QtCreator 2013-05-31T10:42:21
#
#-------------------------------------------------
QT -= core gui
TARGET = CC_Cpp
TEMPLATE = lib
DEFINES += CC_CPP_LIBRARY
SOURCES += \
CC_Number.cpp \
CC_File.cpp
HEADERS +=\
cc_cpp_global.h \
CC_Number.h \
CC_File.h
unix:!symbian {
maemo5 {
target.path = /opt/usr/lib
} else {
target.path = /usr/lib
}
INSTALLS += target
}
推荐答案
我将以下内容添加到了尝试使用该库的项目的模板文件中,并且成功了.
I added the following to the template file of the project that was trying to use the library and it worked.
SOURCES += main.cpp\
mainwindow.cpp \
animal.cpp \
email.cpp \
owner.cpp \
phone.cpp \
/home/mongo/Cpp/CC_Cpp/CC_Number.cpp \
/home/mongo/Cpp/CC_Cpp/CC_Date.cpp \
/home/mongo/Cpp/CC_Cpp/CC_TimeStamp.cpp
HEADERS += mainwindow.h \
animal.h \
email.h \
owner.h \
phone.h \
/home/mongo/Cpp/CC_Cpp/CC_Number.h \
/home/mongo/Cpp/CC_Cpp/CC_Date.h \
/home/mongo/Cpp/CC_Cpp/CC_TimeStamp.h
这篇关于在 QTCreator 未定义参考中使用库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!