Ist es möglich, Ausnahmen und RTTI in Boost-Bibliotheken zu deaktivieren?

8

Ich entwickle einige native Bibliotheken für Android und verwende Boost-Bibliotheken - nur Header-basierte. Das Problem, mit dem ich konfrontiert bin, ist, dass, wenn ich versuche, einige meiner nativen Bibliotheken mit einer Systembibliothek zu verbinden, die UnsatisfiedLinkError geworfen wird. Es liegt an verschiedenen C ++ - Laufzeiten, wie in der NDK-Dokumentation angegeben:

  

Sie können nur eine einzige C ++ - Laufzeit auswählen, die Ihr gesamter Code enthält   darauf ankommen. Es ist nicht möglich, gemeinsam genutzte Bibliotheken zu mischen   verschiedene C ++ Laufzeiten.

Systembibliotheken verwenden RTTI und Exceptions nicht, aber meine Bibliotheken verwenden sie implizit. Ich weiß, dass es Makros BOOST_EXCEPTION_DISABLE und BOOST_NO_RTTI gibt, aber ich bin nicht in der Lage, es zum Funktionieren zu bringen. Ich habe versucht, sie als Compilerflags und auch in der config.hpp zu setzen, aber ohne Glück - immer noch viele Fehler wie

%Vor%

Wie kann ich diese Funktionen in Boost deaktivieren, ist das überhaupt möglich?

    
vitakot 30.06.2012, 20:45
quelle

1 Antwort

5

Die Antwort ist "vielleicht". Einige Boost-Bibliotheken funktionieren mit deaktivierten Ausnahmen - einige nicht. Das Gleiche gilt für RTTI.

Ich schlage vor, Sie überprüfen die Dokumentation für die speziellen Boost-Bibliotheken, die Sie interessieren.

Zum Beispiel arbeitet Boost.Array mit Ausnahmen deaktiviert, aber Boost.Format nicht.

Wenn Sie Nachrichten wie cannot use typeid with -fno-rtti erhalten, wird dies wahrscheinlich beim Kompilieren eines Teils von Boost sein, der RTTI erfordert. Wo der Fehler auftritt, wird Ihnen (normalerweise) sagen, welche Bibliothek.

    
Marshall Clow 01.07.2012, 03:46
quelle

Tags und Links