Frage

Ich bin auf einige Fehler in einer der Boost-Komponenten gestoßen, die ich verwende.Nachdem ich das Problem ein wenig analysiert hatte, stellte ich fest, dass ich nicht der Einzige war und der Autor bereits einen Fix herausgegeben hatte, der im Boost-SVN-Trunk verfügbar ist.

Was wäre der beste Ansatz, wenn ich nur diese Komponente aktualisieren und die bereits erstellten Bibliotheken wiederverwenden möchte?Die Komponente ist nicht nur ein Header.

  • Compiler:MSVC 9 mit SP1, TR1
  • Betriebssystem:Vista
  • Schub:1.39 von BoostPro Computing
  • fehlerhafte Komponente: Boost-Welle
  • Insekt:Rennbedingungen.Der Fehler wurde im Mai dieses Jahres behoben, aber soweit ich das beurteilen kann, wurde er in keiner Version berücksichtigt.

Was ich bisher gemacht habe:

  • SVN-Auschecken des Wave-Unterverzeichnisses
  • lokales Unterverzeichnis ersetzt
  • Jetzt suche ich nach einer Möglichkeit anzugeben, was ich bauen möchte Nur Welle

Ich habe es ein bisschen satt, die gesamte Boost-Bibliothek neu aufzubauen.Ich weiß nicht, ob der Kofferraum gerade produktionsbereit ist.

War es hilfreich?

Lösung

Folgendes habe ich letztendlich getan:

  1. Zuerst habe ich mir die Version der Wave-Bibliothek angesehen, in der das Problem behoben wurde (53230).Nachdem ich es mit meiner lokalen Kopie verglichen habe, habe ich die folgenden Änderungen festgestellt:

    – Wave hat eine boost.iterator-Implementierung wiederverwendet, anstatt eine eigene bereitzustellen

    - Die flex_string-Implementierung wurde aktualisiert

    - Ein Ref-Zähler wurde atomar gemacht.Dies sollte der Bugfix sein

  2. Dann habe ich einfach mein Boost/Wave-Verzeichnis durch das von SVN ersetzt.Ich habe bootstrap.bat ausgeführt (wenn Sie BoostPro verwenden, müssen Sie dies aus der Boost-Quellen-ZIP-Datei herunterladen) und dann habe ich bjam ausgeführt:

    bjam --build-directory=build toolset=msvc variant=debug|release link=static threading=multi runtime-link=shared --mit-Welle

    Durch das Hinzufügen von --with-wave werden nur Wave und seine Abhängigkeiten erstellt.

  3. Zu diesem Zeitpunkt bekam ich Kompilierungsfehler:Es scheint, dass auch Spirit aktualisiert wurde.Ich habe Spirit (53252) von SVN heruntergeladen und den Befehl bjam erneut ausgegeben.

    Die Bibliothek wurde sauber erstellt und ich habe die beiden Bibliotheken in meinen Boost-Lib-Ordner kopiert.

Nachdem ich diese Schritte ausgeführt hatte, baute ich mein Projekt neu auf und die Absturzfehler waren verschwunden.

Andere Tipps

Bester Ansatz:Erstellen Sie einen Patch von diffing die Änderungen im Repository (z. B.indem Sie einen Teil des Repositorys auschecken und verwenden svn diff), und wenden Sie dann den Patch mit auf die Dateien in Ihrer Boost-Installation an patch (Unix-Tool).

Dies erfordert möglicherweise eine Unix-ähnliche Konsole unter Windows (z. B.Cygwin).Alternativ können Sie vielleicht einen Windows-SVN-Client wie TortoiseSVN nutzen, aber ich bin mir nicht sicher, ob dies das Patchen von Dateien außerhalb der Versionskontrolle ermöglicht.

Sprechen Sie über eine Header-Bibliothek?Wenn nicht, müssen Sie auch diesen Teil Ihrer Boost-Bibliothek neu erstellen. Leider glaube ich nicht, dass dies mit dem Boost-Installationsprogramm von BoostPro kompatibel ist.

Nun, Sie können die Protokolle überprüfen und die genaue Revision sehen, mit der das Problem behoben wurde, nur diese Revision unterscheiden und den Patch manuell anwenden.

Es wird nicht empfohlen, nur eine Komponente zu aktualisieren, da Boost sich selbst stark wiederverwendet und es daher bei einer Änderung der Benutzeroberfläche zu allen möglichen seltsamen Verhaltensweisen kommen würde.Wenn Sie die Komponente und den Fehler angeben, können wir Ihnen möglicherweise weiterhelfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top