I created an application that uses RTTI support for dynamic_cast. I added "APP_CPPFLAGS += -frtti" in Application.mk file but i get the error: "undefined reference to `vtable for...". If i don't use RTTI, i get the error: "error: 'dynamic_cast' not permitted with - fno-rtti"
There is the output i get:
./obj/local/armeabi-v7a/objs/vnptsofthsm/VNPTCASoftHSM/botan_impl/global_rng.o: In function `~RandomNumberGenerator':
D:\Duongpd\Token\TMS\vnpt.example.TestSoftHSM/jni/VNPTCASoftHSM/botan_impl/../botan/../botan/rng.h:90: undefined reference to `vtable for Botan::RandomNumberGenerator'
D:\Duongpd\Token\TMS\vnpt.example.TestSoftHSM/jni/VNPTCASoftHSM/botan_impl/../botan/../botan/rng.h:90: undefined reference to `vtable for Botan::RandomNumberGenerator'
D:\Duongpd\Token\TMS\vnpt.example.TestSoftHSM/jni/VNPTCASoftHSM/botan_impl/../botan/../botan/rng.h:90: undefined reference to `vtable for Botan::RandomNumberGenerator'
D:\Duongpd\Token\TMS\vnpt.example.TestSoftHSM/jni/VNPTCASoftHSM/botan_impl/../botan/../botan/rng.h:90: undefined reference to `vtable for Botan::RandomNumberGenerator'
./obj/local/armeabi-v7a/objs/vnptsofthsm/VNPTCASoftHSM/botan_impl/global_rng.o:(.data.rel.ro+0x8): undefined reference to `typeinfo for Botan::RandomNumberGenerator'
And here is Botan::RandomNumberGenerator :
class RandomNumberGenerator
{
public:
static RandomNumberGenerator* make_rng();
virtual void randomize(byte output[], size_t length) = 0;
SecureVector<byte> random_vec(size_t bytes)
{
SecureVector<byte> output(bytes);
randomize(&output[0], output.size());
return output;
}
byte next_byte();
virtual bool is_seeded() const { return true; }
virtual void clear() = 0;
virtual std::string name() const = 0;
virtual void reseed(size_t bits_to_collect) = 0;
virtual void add_entropy_source(EntropySource* source) = 0;
virtual void add_entropy(const byte in[], size_t length) = 0;
RandomNumberGenerator() {}
virtual ~RandomNumberGenerator() {}
private:
RandomNumberGenerator(const RandomNumberGenerator&) {}
RandomNumberGenerator& operator=(const RandomNumberGenerator&)
{ return (*this); }
};
My Application.mk:
APP_STL := gnustl_static
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -frtti
APP_CPPFLAGS += -DANDROID
APP_ABI := armeabi-v7a
Can you help me please?
Here people succeeded to build the botan libraries for Android. Note that they used an older NDK, and did not have the rtti
option at all. Most likely, you don't need it, too.