1

/usr/bin/ld: bin/TheUniverse.o: in function main': TheUniverse.cpp:(.text+0x2c): undefined reference toDragonEngine::Application::run()' /usr/bin/ld: bin/TheUniverse.o: in function TheUniverse::TheUniverse()': TheUniverse.cpp:(.text._ZN11TheUniverseC2Ev[_ZN11TheUniverseC5Ev]+0x14): undefined reference toDragonEngine::Application::Application()' /usr/bin/ld: bin/TheUniverse.o: in function TheUniverse::~TheUniverse()': TheUniverse.cpp:(.text._ZN11TheUniverseD2Ev[_ZN11TheUniverseD5Ev]+0x22): undefined reference toDragonEngine::Application::~Application()' /usr/bin/ld: bin/TheUniverse.o:(.data.rel.ro._ZTI11TheUniverse[_ZTI11TheUniverse]+0x10): undefined reference to `typeinfo for DragonEngine::Application'

TheUniverse.cpp

#include "DragonEngine.h"

class TheUniverse : public DragonEngine::Application{

public:
    TheUniverse(){

    }

    ~TheUniverse(){

    }


};

int main(){
   TheUniverse* uni = new TheUniverse();
   uni->run();
   delete uni;
   return 0;
}

Application.cpp

#include "Application.h"

namespace DragonEngine {

void Application::run(){
    while(true);
}

Application::Application(){

}

Application::~Application(){

}

}

Application.h

#pragma once

namespace DragonEngine {

class Application {
     public:

     Application();
     virtual ~Application();

     void run();
   };
}

DragonEngine.h

#include "DragonEngine/Application.h"

Makefile para la librería

ENGINE_OBJS = bin/Application.o

all: engine

engine: $(ENGINE_OBJS)
    g++ -fPIC -shared -o bin/libDragonEngine.so $(ENGINE_OBJS)
    @rm -rf The\ Universe/libDragonEngine.so

bin/%.o: src/%.cpp
    g++ -fPIC -c $?
    @mv *.o bin

bin/%.o: src/DragonEngine/%.cpp
    g++ -fPIC -c $?
    @mv *.o bin

clean:
    @rm -rf bin/*

Makefile para el programa

GAME_OBJS = bin/TheUniverse.o


all: game

game: $(GAME_OBJS)
    @rm bin/libDragonEngine.so -rf
    @rm libDragonEngine.so -rf
    @cp ../DragonEngine/bin/libDragonEngine.so bin
    @cp ../DragonEngine/bin/libDragonEngine.so .
    g++ -o TheUniverse $(GAME_OBJS) -I../DragonEngine/src -L DragonEngine
    @mv TheUniverse bin
    @rm libDragonEngine.so

bin/%.o: src/%.cpp
    g++ -c $? -I../DragonEngine/src 
    @mv *.o bin

clean:
    @rm -rf bin/*
    @rm -rf libDragonEngine.so

introducir la descripción de la imagen aquí

Lo que intento hacer es generar una librería dinamica y crear un objeto de una clase que hereda de otra contenida en la librería luego ejecutar la funcion run() que es definida en la clase de la librería por el archivo Application.cpp, estoy usando gcc version 8.3.0 (Debian 8.3.0-6) para compilar. He estado mas de 1 mes con esto dandole vueltas de vez en cuando por un par de horas no se que estoy haciendo mal.

0 Answers0