3

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

手伝ってくれませんか。

4

1 に答える 1

0

ここで人々はAndroid用のbotanライブラリを構築することに成功しました。rtti彼らは古いNDKを使用しており、オプションがまったくなかったことに注意してください。ほとんどの場合、あなたもそれを必要としません。

于 2012-10-10T08:40:39.853 に答える