Ich versuche, ein großes Projekt von gcc (Linux) nach msvc (Windows) zu portieren, mit Hilfe von cmake und boost Bibliotheken.
Das Projekt kompiliert und läuft gut für gcc, aber auf msvc gibt es den folgenden Fehler zurück:
%Vor%Ich habe versucht, ein einfaches Projekt mit boost asio auszuführen, und es hat funktioniert, was Boost-Build-Probleme teethisch ausschließt.
Die CMakeLists.txt ist wie folgt: (getrennt die Teile von Interesse)
%Vor%Vielen Dank im Voraus
In meinem Fall hat das Flag /EHsc
nicht funktioniert. Es stellte sich heraus, dass BOOST_NO_EXCEPTIONS
definiert wurde, so dass der Compiler nach der Funktion "benutzerdefiniert" (wie in boost / throw_exception.hpp) suchte.
Daher können Sie Ihre Lieblingsfunktion boost::throw_exception()
schreiben:
Wenn Sie Windows ausführen, müssen Sie (standardmäßig) auf boost.system
und boost.regex
Wie es hier heißt:
Hinweis Mit MSVC oder Borland C ++ möchten Sie möglicherweise hinzufügen -DBOOST_DATE_TIME_NO_LIB und -DBOOST_REGEX_NO_LIB zu Ihrem Projekt Einstellungen, um das Autolinking von Boost.Date_Time und Boost.Regex zu deaktivieren Bibliotheken jeweils. Alternativ können Sie diese auch erstellen Bibliotheken und Link zu ihnen.
Wenn Sie keine Verbindung zu anderen Boost-Bibliotheken herstellen möchten, können Sie die identische (nicht Boost) -Asio-Bibliothek von hier .
In Bezug auf Ihre CMakeLists.txt
-Datei möchten Sie eine Zeile wie
um die Bibliothek tatsächlich zu verknüpfen.
EDIT: auch, schauen Sie sich How Um mit boake.system mit cmake zu verlinken , könnte es sein, dass Sie die einzelnen Boost-Bibliotheken spezifisch spezifizieren müssen anstatt ${Boost_LIBRARIES}
Sieht so aus, als müsste die Binärdatei dieselbe Struktur haben, um die Kompatibilität zu ermöglichen. Die MSVC-Standardbibliotheksimplementierung verwendet die strukturierte Ausnahmebehandlungsoption on. Sieht so aus, dass boost :: system dies auch nutzt. Möglicherweise werden entsprechende Warnmeldungen angezeigt, in denen Sie aufgefordert werden, die Behandlung von Strukturausnahmen hinzuzufügen.
%Vor%Tags und Links c++ visual-c++ compiler-errors cmake boost-asio