Nicht aufgelöster ctor bei Debug-Settings, im Release vorhanden??
-
Ich habe eine eigene Bibliothek, die ich mit dem Visual Studio 2012 als Debug und als Release erstellt habe. Dort gibt es eine Klasse, die einen Standardkonstruktor hat:
// Header class Foo { public: Foo(); // [...] // *.cpp Foo::Foo() : m_a(0), m_b(0), m_c(0), m_d(0) { }Die *.cpp wird auch mitkompiliert, da dort auch andere Methoden der Klasse definiert sind.
Jetzt habe ich ein anderes Projekt, wo ich die Bibliothek heranziehe und die Klasse Foo dort wie folgt verwende:
// Alles in einer Header-datei class Bar{ public: Bar() { // m_foo wird nicht verwendet } Bar(unsigned int i) { m_integer = i; // m_foo wird nicht verwendet (selber Code wie im anderen ctor) } unsigned int m_integer; Foo m_foo };Auf Release: Kompiliert durch, läuft fehlerfrei
Auf Debug:"LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall Foo::Foo(void)" in Funktion ""public: __thiscall Bar::Bar(unsigned int)
Mir ist klar, was die Meldung aussagt. Nur warum kann der Compiler im Debug-Modus den Konstruktor nicht finden, auf Release schon?
-
Du hast vergessen im Release die Lib zu linken?