2012-10-10 1 views
3

dynamic_cast에 RTTI 지원을 사용하는 응용 프로그램을 만들었습니다. 나는 "APP_CPPFLAGS + = -frtti"Application.mk 파일에 추가했지만 오류 : "vtable에 대한 정의되지 않은 참조 ..."가 표시됩니다. " 'dynamic_cast는'함께 할 수 없습니다 - FNO - RTTI 오류 :"RTTI 지원을위한 vtable for ...에 대한 정의되지 않은 참조

가 출력 내가 얻을 : 내가 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' 

그리고 모란입니다 : : 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 

은 당신이 나를 도와 주실 수 있습니까?

답변

0

Here 사람들이 botan Android 용 라이브러리를 제작하는 데 성공했습니다. 그들은 이전 NDK를 사용했으며 rtti 옵션이 전혀 없음에 유의하십시오. 가장 가능성이 높습니다. 필요하지도 않습니다.

+1

그는 RTTI를 지원하는 NDK 툴 체인 R5b를 사용하여 botan libraris를 만들었지 만 Application.mk와 관련하여 사용하지 않았습니다. 고맙습니다! – ChenHuang

+0

RTTI없이 프로젝트를 다시 빌드 하시겠습니까? –

+1

예, Android 용 botanine에서 dynamic_cast를 사용하지 않는다는 의미입니다. 다시 작성해야합니다. 당신의 도움을 주셔서 감사합니다! – ChenHuang

관련 문제