Salah satu keluhan utama saya tentang C ++ adalah seberapa sulit dalam praktiknya untuk melewati objek perpustakaan std di luar perpustakaan dinamis (yaitu dll / jadi) batas.
Perpustakaan std sering hanya header-saja. Yang bagus untuk melakukan beberapa optimasi yang luar biasa. Namun, untuk dll, mereka sering dibangun dengan pengaturan kompiler berbeda yang dapat berdampak pada struktur internal / kode wadah perpustakaan std. Sebagai contoh, di MSVC satu dll dapat dibangun dengan iterator debugging sementara yang lain membangun dengan itu. Kedua dll ini mungkin mengalami masalah ketika melewati wadah std. Jika saya mengekspos std::string
di antarmuka saya, saya tidak dapat menjamin kode yang digunakan klien adalah std::string
cocok dengan perpustakaan saya std::string
.
Hal ini menyebabkan sulitnya men-debug masalah, sakit kepala, dll. Anda dapat secara kaku mengontrol pengaturan kompiler di organisasi Anda untuk mencegah masalah ini atau Anda menggunakan antarmuka C sederhana yang tidak akan memiliki masalah ini. Atau tentukan kepada klien Anda pengaturan kompiler yang diharapkan yang harus mereka gunakan (yang menyebalkan jika perpustakaan lain menentukan pengaturan kompiler lain).
Pertanyaan saya adalah apakah C ++ 11 mencoba melakukan sesuatu untuk menyelesaikan masalah ini?
DLL
s. Antara SO
itu selalu bekerja dengan baik.