Ausgelagerte Funktionen in structs und statische Bibliotheken



  • Hallo!
    Ich habe ein Problem, dass ich gar nicht so genau formulieren kann, deshalb mal ein paar Zeilen Beispielcode:

    //Test.h

    struct MyStruct {
    int i;
    MyStruct() : i(100) { };
    void setToZero();
    };

    // Test.cpp
    #include "Test.h"

    void MyStruct::setToZero() {
    i = 0;
    };

    Eigentlich ein ganz einfach Programm... es kompiliert und es funktioniert auch... bis ich eine statische Bibliothek draus machen will. Dann heißt es plötzlich:
    warning LNK4221: Es wurden keine öffentlichen Symbole gefunden. Zugriff auf archivierten Member wird nicht möglich sein.

    Sobald ich setToZero() dann in einem Programm benutzen will, dass diese statische Bibliothek verwendern verwendet, meldet der Linker
    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol

    Was kann ich tun?

    Vielen Dank und viele Grüße,
    Jochen



  • Normalerweise kommt die struct doch in eine Headerdatei, die nicht mit
    kompiliert wird, sondern immer mit #include eingebunden werden muss, oder?



  • Ich benutze in den Funktionen des Structs Elemente aus Klassen... die wiederum das Struct verwenden. Ich habe also keine andere Wahl als die Implementierung in eine cpp-Datei zu stecken.
    Ich hatte auch nie Probleme damit... bis ich eben eine statische Bibliothek draus machen wollte.

    Jochen


Anmelden zum Antworten