主Makefile中的未定义引用

 UFO来了- 发布于 2023-01-31 14:04

我在linux中做了一个示例项目但是在运行main Makefile时遇到错误

项目信息:

项目/数据库文件夹,包含文件database.h,database.cpp,bulid-database,Makefile

database.h

/*data base file*/
#include
using namespace std;
class mydatabase
{
public:
    mydatabase(int a , int b);
    int sum(){return m_a +m_b;}
    int diff(){return m_a -m_b;}
    int mul(){return m_a *m_b;}
    float div(){return m_a /m_b;}
    int reminder(){return m_a %m_b;}

private:
    int m_a , m_b;
};

database.cpp

#include "database.h"
mydatabase::mydatabase(int a ,int b):m_a(a) , m_b(b)
{
}

bulid数据库

make
if [ -f libdatabase.a ];
then
   echo "Database-Library Build Success"
   cp libdatabase.a ../LIBs/
else
    echo "databse-Library Build Failure"
fi

Makefile文件

HEADERFILES = $(wildcard *.h)
CPPFILES = $(wildcard *.cpp)
OBJFILES = $(patsubst %.cpp,%.o ,$(wildcard *.cpp))
$(OBJFILES): %.o : %.cpp $(HEADERFILES)
    g++ -c -o $@ $<
    ar ruv libdatabase.a $@
    ranlib libdatabase.a

具有文件main.cpp,Makefile的项目/主文件夹

main.cpp中

#include "database.h"
#include 
int main()
{
    mydatabase *obj = new mydatabase(10 ,5);
    std::cout<<"sum is"<sum()<diff()<mul()<div()<reminder()<

Makefile文件

CC        = g++
INCPATH  = -I. \
       -I.. \
       -I../database
LIBPATH  = -L../LIBs
LDFLAGS   = ${LIBPATH}/libdatabase.a
CFLAGS    = ${INCPATH} 
testdate:main.o
    $(CC) $(CFLAGS) -o testdate main.o $(LDFLAGS)
main.o:main.cpp
    $(CC) $(CFLAGS) -c -o main.o main.cpp

问题:数据库生成文件工作正常,但主要的Makefile我有一些问题,如

错误: main.o:在函数main': main.cpp:(.text+0x92): undefined reference tomydatabase :: mydatabase(int,int)'collect2:ld返回1退出状态

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有