SORU
3 Aralık 2010, Cuma


Nasıl Android Mall of Sofia ile boost Kütüphanesi (shared_ptr dahil) kullanmak ve STLport

Bunu anladım çünkü bir soru, en azından bildiğim kadarıyla temiz kitaplığı derleme daha bir cevap daha. Benim için asıl sorun shared_ptr çalışmalarını sağlamaktı.

Malzemeler:

V. 1.45.0 artırmak

http://www.anddev.org/viewtopic.php?p=29939 STLport sürümü.

Bu üniversite eğitim sürümü r4b.

Tarifi:

Android.mk Dosya Ekle:

LOCAL_CFLAGS  = -DBOOST_EXCEPTION_DISABLE -D_STLP_NO_EXCEPTIONS -DOS_ANDROID -D_STLP_USE_SIMPLE_NODE_ALLOC

__Stl_aramayı Kaldır çizgisinde_length_hata atmak/_string/stl stlport 613.h. Eğer isterseniz _STLP_NO_EXCEPTİONS kullanabilirsiniz.

//Smart_ptr/shared_ptr boost düzenleyin.satırdan sonra 261 destek çağrısı kurtulmak için hes::shared_ptr throw_exception kurucu. Bu yöntemi tüm vücut etrafında #ifndef BOOST_EXCEPTİON_DİSABLE kullandım. (Ama cevabı aşağıya bakın.)

Sonraki bazı parçaları kayıp vermeniz gerekir. Bir başlık ile aşağıdaki dosya oluşturun:

#ifdef OS_ANDROID

#include <exception>

namespace std
{
    struct bad_alloc : public exception { bad_alloc operator()(){}};
}

#endif

ve bir kaynak ile hafifleştirilmiş Özel Sınıf bad_alloc destek dosyası:

#ifdef OS_ANDROID

#include <exception>

namespace std
{
    exception::exception() {}
    exception::~exception() {}
    const char* exception::what() const {}
}

#endif

/Shared_ptr destek de dahil olmak üzere nereye giderseniz gidin Başlığı vardır.hes. Kaynak derleme ve kütüphanenize ekleyin.

CEVAP
6 Aralık 2010, PAZARTESİ


Bu yaklaşım tamamen debuggable bir kütüphane derleme çalışmaz ortaya çıktı. Yayın kütüphane bazı infelicities optimize, ama hata ayıklama kitaplığı-O0 yapılır bazı Ek sorunlar ortaya-O2 ile derlendi. Ayrıca, destek dosyalarını düzenlemek zorunda hakkında çok mutlu değildi. Bazı ek çalışma ile, aşağıdaki çözümü buldum.

İlk olarak, destek herhangi bir dosya düzenleme yok. Ekle std ad alanı içinde: Başlığı takip etmek yerine

struct bad_cast : public exception {bad_cast operator()(){}};

Bir sonraki kaynak dosyasına aşağıdakileri ekleyin:

namespace boost
{
    void throw_exception(std::exception const&) {}
}

Bu Şimdi bile android ile uygulama:debuggable="true" androidmanifest.xml. derler bağlantılar Öykünücüsü çalışmıyor, ama sonra bu kütüphane de dahil ettim bunu daha önce yapmıyordu.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Break

    Break

    10 Aralık 2005
  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • Shantanu Sood

    Shantanu Soo

    3 Kasım 2008