Benennung von Konflikten zwischen verschiedenen Bibliotheken

8

Ich versuche mein Programm mit zwei statisch verknüpften Bibliotheken zu kompilieren: SFML und PhysFS. In der Verknüpfungsphase bekomme ich jedoch folgende Fehler:

  

eror LNK2005: _infllatePrime ist bereits in sfml-graphics-s.lib (inflate.obj) definiert   Fehler LNK2005: _inflateGetHeader wurde bereits in sfml-graphics-s.lib (inflate.obj) definiert   Fehler LNK2005: _adler32_combine wurde bereits in sfml-graphics-s.lib (adler32.obj) definiert   Fehler LNK2005: _crc32_combine bereits in sfml-graphics-s.lib (crc32.obj) definiert   Fehler LNK1169: ein oder mehrere mehrfach definierte Symbole gefunden

Was soll ich tun, wenn zwei völlig unabhängige Bibliotheken diese Art von Konflikten haben?

Edit: Oh bitte - bitte sagen Sie mir, ich werde keinen Wrapper schreiben müssen. Ich bin es so leid, Dinge zur Arbeit zu bringen, ich möchte nur meinen eigenen Code schreiben. : (

    
Paul Manta 04.06.2011, 13:02
quelle

2 Antworten

9

Beide Bibliotheken scheinen es vorgezogen zu haben, die zlib-Bibliothek aufzunehmen, anstatt eine Abhängigkeit von ihr zu haben. Ich würde versuchen, sie ohne diese Einbeziehung zu bauen und die ausführbare Datei mit zlib zu verknüpfen.

    
AProgrammer 04.06.2011, 13:26
quelle
0

Angenommen, Sie haben den Quellcode der Bibliothek, kann dies so einfach sein wie das Hinzufügen einiger Namespaces. In Header-Datei der Bibliothek A:

%Vor%

und in den C ++ Quelldateien:

%Vor%

Dasselbe für Bibliothek B, aber mit einem anderen Namensraumnamen. Ich weiß, dass das ein Schmerz ist, aber wenn die Bibliotheken wirklich Namenskonflikte haben, ist es der sauberste Ansatz.

    
Neil Butterworth 04.06.2011 13:23
quelle

Tags und Links