/usr/bin/ld: bin/TheUniverse.o: in function
main': TheUniverse.cpp:(.text+0x2c): undefined reference to
DragonEngine::Application::run()' /usr/bin/ld: bin/TheUniverse.o: in functionTheUniverse::TheUniverse()': TheUniverse.cpp:(.text._ZN11TheUniverseC2Ev[_ZN11TheUniverseC5Ev]+0x14): undefined reference to
DragonEngine::Application::Application()' /usr/bin/ld: bin/TheUniverse.o: in functionTheUniverse::~TheUniverse()': TheUniverse.cpp:(.text._ZN11TheUniverseD2Ev[_ZN11TheUniverseD5Ev]+0x22): undefined reference to
DragonEngine::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
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.