unresolved external symbol
-
Kann mir jemand sagen warum ich diese Fehlermeldung bekomme ?
Ich weiß einfach nicht was ich falsch mache.
(von "mSprite(textures.get(Textures::Desert))" wird textures als Fehler makiert)Code:
Aircraft::Aircraft(Type type, const TextureHolder& textures) : mType(type), mSprite(textures.get(Textures::Desert)) { sf::FloatRect bounds = mSprite.getLocalBounds(); mSprite.setOrigin(bounds.width / 2.f, bounds.height / 2.f); }Fehlermeldung:
Error 1 error LNK2001: unresolved external symbol "public: __thiscall Aircraft::Aircraft(enum Aircraft::Type,class ResourceHolder<class sf::Texture,enum Textures::ID> const &)" (??0Aircraft@@QAE@W4Type@0@ABV?$ResourceHolder@VTexture@sf@@W4ID@Textures@@@@@Z)
Ich lasse bewusst viel Code weg, da es einfach zu viel wäre, falls es doch nötig sein sollte chreibtz es einfach.
Vielen Dank im voraus

-
Das ist ein Linkerfehler. Offenbar vergisst du, die zu dieser Datei gehörende Objektdatei zum Programm dazuzulinken. Oder vielleicht wird der Code auch nicht compiliert, weil er per #if ausgeschlossen wurde, o.ä.
-
Die Fehlermeldung will dir sagen, dass in deinem Code
Aircraft::Aircraft(enum Aircraft::Type,class ResourceHolder<class sf::Texture,enum Textures::ID> const &);steht, was sagt, dass es diese Funktion gibt, aber nirgendwo steht
Aircraft::Aircraft(enum Aircraft::Type,class ResourceHolder<class sf::Texture,enum Textures::ID> const &){ //implementation }Wenn es deine Funktion ist dann solltest du sie mal implementieren, wenn es eine Funktion aus einer Lib ist musst du die Lib ins Programm linken.
-
ah stimmt, das ist ja eine ganz andere Funktion...
-
Ich wär jetzt davon ausgegangen, dass TextureHolder ein Typedef auf ResourceHolder<class sf::Texture,enum Textures::ID> ist...
-
Mh also ich finde meinen Fehler nicht
Aircraft.hpp#ifndef AIRCRAFT_HPP #define AIRCRAFT_HPP #include <SFML\Graphics.hpp> #include "Entity.hpp" #include "ResourceHolder.hpp" class Aircraft : public Entity { public: enum Type { Eagle, Raptor, }; Aircraft(Type type, const TextureHolder& textures); virtual void drawCurrent(sf::RenderTarget& target, sf::RenderStates& states); private: sf::Sprite mSprite; Type mType; }; #endif // AIRCRAFT_HPP //Aircraft.cpp
#include "Aircraft.hpp" Textures::ID toTextureID(Aircraft::Type type) { switch (type) { case Aircraft::Eagle: return Textures::Eagle; case Aircraft::Raptor: return Textures::Raptor; } } Aircraft::Aircraft(Type type, const TextureHolder& textures) : mType(type), mSprite(textures.get(Textures::Desert)) { sf::FloatRect bounds = mSprite.getLocalBounds(); mSprite.setOrigin(bounds.width / 2.f, bounds.height / 2.f); } void Aircraft::drawCurrent(sf::RenderTarget& target, sf::RenderStates& states) { target.draw(mSprite, states); }
-
Bashar schrieb:
Ich wär jetzt davon ausgegangen, dass TextureHolder ein Typedef auf ResourceHolder<class sf::Texture,enum Textures::ID> ist...
Das habe ich beim Durchlesen des Threads auch gedacht. Scheint auch logisch. Ist auch so.
Mh also ich finde meinen Fehler nicht
Ich auch nicht. Daher verweise ich dich an campers ersten Post:
camper schrieb:
Das ist ein Linkerfehler. Offenbar vergisst du, die zu dieser Datei gehörende Objektdatei zum Programm dazuzulinken. Oder vielleicht wird der Code auch nicht compiliert, weil er per #if ausgeschlossen wurde, o.ä.
Hast du Aircraft.cpp zum Projekt hinzugefügt?
-
Ja die ist defenitiv eingebunden und zum Projekt hinzugefügt.
LOL 
Habe jetzt die cpp Datei einfach mal gelöscht und neu gemacht, jetzt gehts...
Vielen Dank für die Hilfe!