dynamic_castのRTTIサポートを使用するアプリケーションを作成しました。Application.mkファイルに「APP_CPPFLAGS+= -frtti」を追加しましたが、「「vtablefor...」への未定義の参照」というエラーが表示されます。RTTIを使用しない場合、次のエラーが発生します:「エラー:'dynamic_cast'は--fno-rttiで許可されていません」
私が得る出力があります:
./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'
そしてここに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); }
};
私のApplication.mk:
APP_STL := gnustl_static
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -frtti
APP_CPPFLAGS += -DANDROID
APP_ABI := armeabi-v7a
手伝ってくれませんか。