Ich verwende eine geschlossene Quellbibliothek (von Activ financial), die mit ihrer API eine Boost-Verteilung enthält, sowohl einige Boost-Header-Dateien als auch Boost-Bibliotheksdateien.
Ich verwende Boost auch in meiner bestehenden Codebasis, und ich muss Activ aus meinem bestehenden Code verwenden.
Einige Punkte
Meine Sorge kommt in Verbindung. Wie kann ich sicherstellen, dass mein Activ-abhängiger Code mit Activs Boost verknüpft ist und mein anderer Code mit meinem Boost verknüpft ist?
Ich benutze jetzt g ++, mache das auch in VS2008. Ich habe es in VS2008 vorher funktioniert, aber ich habe keine Ahnung, wie alles zusammenhängt. Ich möchte versuchen, dass es richtig gemacht wird.
Gibt es eine Möglichkeit, dies zu tun, ohne den Activ-Teil in einer dynamischen Bibliothek weiter einzukapseln?
Bearbeiten:
Zum einen ist mein Endprodukt immer eine ausführbare Datei. Für zwei verbinde ich mich statisch, um mich zu steigern. Die Activ-Bibliothek enthält sowohl statische als auch dynamische Versionen von Boost-Objektbibliotheken, und ich plane, sie statisch zu verknüpfen.
Ich übergebe niemals Boost-Objekte zwischen Code, der verschiedene Boost-Versionen verwendet.
Die Frage ist, wie verknüpfe ich eine cpp oder .o
Datei mit Objekten in one Bibliotheksdatei, und stellen Sie dann sicher, dass andere .o
Dateien auf die identischen Objekte in verlinken eine andere Bibliotheksdatei? Ist das möglich?
Verbindet die Bibliothek dynamisch oder statisch mit Boost? Ist die Bibliothek, wenn sie statisch verknüpft ist, die Symbole in der DLL verfügbar (declspec export)?
Wenn die Bibliothek statisch verknüpft ist und die Symbole nicht verfügbar sind, und keine Boost-Datenstrukturen (smart_ptr, threads, usw.) hin und her passieren, können Sie wahrscheinlich Ihre verwenden eigene Version der Boost-Bibliothek in Ihrer DLL.
Tags und Links c++ boost multiple-versions