C ++ hakkındaki en büyük şikayetlerimden biri, pratikte std kütüphanesi nesnelerinin dinamik kütüphanenin (yani dll / so) sınırlarının dışına aktarılmasının ne kadar zor olduğu.
Std kütüphanesi genellikle sadece başlıktır. Bazı harika optimizasyonlar yapmak için harika. Bununla birlikte, dll'ler için, genellikle bir std kütüphane konteynırlarının iç yapısını / kodunu etkileyebilecek farklı derleyici ayarlarıyla oluşturulurlar. Örneğin, MSVC'de bir dll, bir başkası onunla birlikte derlenirken yineleyicinin hata ayıklamasıyla oluşturulabilir. Bu iki eşya, etrafta std kaplarını geçen sorunlara rastlayabilir. std::string
Arayüzümde ifşa edersem, müşterinin kullandığı kodun std::string
kütüphanemle tam olarak eşleştiğini garanti edemem std::string
.
Bu, sorunları, baş ağrıları, vb. Hata ayıklamayı zorlaştırır. Bu sorunları önlemek için kuruluşunuzdaki derleyici ayarlarını sıkı bir şekilde denetlersiniz veya bu sorunlara sahip olmayacak daha basit bir C arayüzü kullanırsınız. Veya müşterilerinize, kullanmaları gereken beklenen derleyici ayarlarını belirtin (başka bir kitaplığın diğer derleyici ayarlarını belirlemesi durumunda berbat).
Sorum şu ki, C ++ 11 bu sorunları çözmek için bir şeyler yapmaya çalıştı mı?
DLL
S arasında zor . S arasında SO
her zaman iyi çalıştı.