No compila el main:undefined reference to main'



我正在用一个类main.c做一个项目,并使用makefile 编译它

Estado.h

#ifndef ESTADO_H
#define ESTADO_H
using namespace std;
#include <string>
class Estado
{
    private:
        int ident;
        bool estInit;
    bool estEnd;
    public: 
    Estado();
        virtual ~Estado();
        Estado(int ident,bool inits,bool ends);
        void setIdent(int id);
        void setInitS(bool inits);
    void setEndS(bool ends);
        int getIdent();
    bool getInitS();
    bool getEndS();
};
#endif // TRANS_H

Estado.c

#include "Estado.h"

Estado::Estado(int ident,bool inits,bool ends)
{
    this->ident=ident;
    this->estInit=inits;
    this->estEnd=ends;
}

void Estado::setIdent(int id){
    ident=id;
}
void Estado::setInitS(bool inits){
    estInit=inits;
}
void Estado::setEndS(bool ends){
    estEnd=ends;
}
int Estado::getIdent(){
    return ident;
}
bool Estado::getInitS(){
    return estInit;
}
bool Estado::getEndS(){
    return estEnd;
}

Main.c

#include <iostream>
#include <vector>
#include"Trans.h"
#include"Estado.h"
using namespace std;
int menu();
void cargarAutomata(int numEstados,int numTrans);
int main()
{
    int numEstados,numTrans,opc;
    cout<<"tt**************************************tt"<<endl;
    cout<<"tt*INGRESO DE PARAMAETROS PARA LA TABLA*tt"<<endl;
    cout<<"tt**************************************tt"<<endl;
    cout<<"Indica la cantidad de estados"<<endl;
    cin>>numEstados;
    cout<<"Indica la cantidad de transiciones"<<endl;
    cin>>numTrans;
    cargarAutomata(numEstados,numTrans);
    return 0;
}

void cargarAutomata(int numEstados,int numTrans){
    vector<Estado> *states(numEstados,Estado());
}

Makefile

CC=g++ -c 
LN=g++
Practica1:  Estado.o Trans.o
    $(LN) Estado.o Trans.o -o Practica1 
transicion.o: Trans.c 
    $(CC) Trans.c Trans.o
est.o: Estado.c 
    $(CC) Estado.c Estado.o

出现以下错误

g++-o实践1 Estado.o Trans.o
/usr/lib/gcc/i486-linux-gnu/4.4.5/../../../lib/crt1.o:在函数_start': (.text+0x18): undefined reference to main'中collect2:ld返回1退出状态make:*[实践1]错误1

您从未实现过析构函数。将此添加到您的Estado.c文件:

Estado::~Estado {
    ...
};

生成文件中似乎有错误。请尝试以下makescript。

CC=g++ -c 
LN=g++
Practica1:  Estado.o Trans.o main.o
    $(LN) Estado.o Trans.o main.o -o Practica1 
transicion.o: Trans.c 
    $(CC) Trans.c -o Trans.o
est.o: Estado.c 
    $(CC) Estado.c -o Estado.o
main.o: main.c
    $(CC) main.c -o main.o

最新更新