Rozwijam niektóre biblioteki natywne dla Androida i korzystam z bibliotek Boost - tylko te oparte na nagłówkach. Problem, z którym się borykam, polega na tym, że gdy próbuję połączyć niektóre z moich bibliotek macierzystych z pewną biblioteką systemową, zostanie zgłoszony UnsatisfiedLinkError
. Wynika to z różnych środowisk wykonawczych C++ jak wskazano w dokumentacji NDK:Czy można wyłączyć wyjątki i RTTI w bibliotekach Boost?
Można wybrać tylko jeden C++ runtime, że cały kod będzie polegać. Nie można mieszać bibliotek współdzielonych skompilowanych z różnymi środowiskami wykonawczymi C++ w stosunku do .
Biblioteki systemowe nie korzystają z RTTI i wyjątków, ale moje biblioteki używają tego niejawnie. Wiem, że istnieją makra BOOST_EXCEPTION_DISABLE
i BOOST_NO_RTTI
, ale nie jestem w stanie sprawić, żeby działało. Próbowałem ustawić je jako flagi kompilatora iw config.hpp jak również, ale bez powodzenia - wciąż się wiele błędów jak
cannot use typeid with -fno-rtti
Jak mogę wyłączyć te funkcje w Boost jest to w ogóle możliwe?
Czy pojawił się ten błąd podczas próby kompilacji wzmocnienia? Lub kiedy próbujesz skompilować swój własny kod? –
Podczas próby skompilowania mojego własnego kodu. – vitakot
BTW, twoje pytanie nie ma sensu; Pisałem używam tylko nagłówki ..., głównie circular_buffer.hpp, signal.hpp i shared_ptr.hpp – vitakot