explicit template instantiations: duplicate symbol bei fremder lib (g++-4.2)



  • Hallo,

    Ich habe gerade einen blöden Linkerfehler bei Verwendung einer fremden Library. Im Endeffekt sieht es so aus, wenn ich gegen 'libbla' linken will:

    ld: duplicate symbol Blabla<float>::Iterator::Iterator() in /.../libbla.a (Iterators.o) and /.../libbla.a (Blabla.o)
    

    In Iterators.cc und Blabla.cc finden sich jeweils folgende Zeilen am Dateiende...

    template class Blabla<float>::Iterator;
    template class Blabla<double>::Iterator;
    
    template class Blabla<float>;
    template class Blabla<double>;
    

    Ich vermute, dass es was ganz einfaches ist, aber ich komme im Moment nicht drauf. Auch die Recherche mit google gab nichts raus, was mir weiterhelfen könnte. Ich habe bereits versucht mit '-fno-implicit-templates' zu kompilieren, was allerdings nicht half.

    Hat jemand eine Idee?

    Wenn das Problem zu compilerspezifisch ist bitte verschieben! 🙂

    Gruß, Christian


Anmelden zum Antworten