SORU
22 EYLÜL 2012, CUMARTESİ


Çınlama -stdlib=kullanarak libstdc derlenmiş kütüphaneleri kütüphanenin

Mac OS X altında C (10.8.2) çalışıyorum ve geçenlerde öldü derleyici kütüphanenin bu stdlib kullanarak mevcut olan C 11 özellikleri kullanma ihtiyacı çıktı ortaya. Ancak, ben de libstdc (MacPorts gelen) karşı bazı eski kütüphane derlenmiş ve Bağlantılı kullanmanız gerekir.

Ne yani bende bağlama hataları, beri başlıkları mirası kütüphaneleri kullanarak, örneğin, std::string olmak için gerekli çözüme karşı std::__1::basic_string (yani, kütüphanenin uygulama std::string) yerine std::basic_string uygulama.

Orada geliştirme (bazı preprocessors bayrakları kullanarak, örneğin?) iki kitaplıkları karıştırmak için bir yoldur

CEVAP
22 EYLÜL 2012, CUMARTESİ


Gördüklerinizsatır içi adABİ sürüm elde etmek için.

Anlamı: o ne

Bu libstdc std::string 5* *kütüphanenin daha farklı bir veri yapısıdır. İkincisi ise referans tasarım sayılır. API uyumlu olmalarına rağmen, EBİ uyumlu değildir. Bu libstdc std::string yap ve sonra kütüphanenin karşı bağlantılı diğer kod başarılı olursa , alan kodu 7 ** bir kütüphanenin olduğunu düşünüyor demektir. I. e. alıcı veya başvuru sayıları artan azaltma olması gerektiğine dair bir ipucu olmazdı.

Satır içi ad olmadan, sonuç, çalışma zamanı bir hata olurdu. Sizin için umut olabilir en iyisi bir kaza. Satır içi ad bu çalışma zamanı hata bağlantı zaman bir hata çevrilir.

Sana programcı bu libstdc std::string ve C kütüphanesi std::string aynı tür gibi görünüyor. Ama linker için, tamamen farklı türleri (ipucu std::__1 ad) gibi görünüyorlar. Ve linker görüşü doğru değildir. Onlartamamen farklı.

Yani Evet, bazı basit şeyler bayrakları link almak için manipüle edebilir. Ama o zaman sonuç çalıştırma zamanı hataları hata ayıklama bir şeytan olurdu.

İstediğini yapmanın tek yolu bu dylibs arasındaki arabirimler string std::types dahil değil. Örneğin char diziler yerine geçebileceği. Hatta-bağlı kütüphanenin Kodu ve tersi (her ikisi de aynı malloc havuza düşmesi ile) bağlantılı libstdc kod bellek sahipliğini aktarabilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AlaskanGrizzly

    AlaskanGrizz

    30 EKİM 2009
  • LevelUpTuts

    LevelUpTuts

    20 Ocak 2012
  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009