Một trong những phàn nàn chính của tôi về C ++ là việc thực hành khó khăn như thế nào khi vượt qua các đối tượng thư viện std bên ngoài ranh giới thư viện động (tức là dll / so).
Thư viện std thường chỉ tiêu đề. Đó là tuyệt vời để làm một số tối ưu hóa tuyệt vời. Tuy nhiên, đối với dll, chúng thường được xây dựng với các cài đặt trình biên dịch khác nhau có thể ảnh hưởng đến cấu trúc / mã bên trong của bộ chứa thư viện std. Ví dụ, trong MSVC, một dll có thể được xây dựng với trình gỡ lỗi lặp trong khi một bản dựng khác bị tắt. Hai dll này có thể gặp vấn đề khi chuyển các thùng chứa std xung quanh. Nếu tôi hiển thị std::string
trong giao diện của mình, tôi không thể đảm bảo mã mà khách hàng đang sử dụng std::string
là trùng khớp chính xác với thư viện của tôi std::string
.
Điều này dẫn đến khó gỡ lỗi, đau đầu, v.v. Bạn có thể kiểm soát chặt chẽ các cài đặt trình biên dịch trong tổ chức của mình để ngăn chặn các sự cố này hoặc bạn sử dụng giao diện C đơn giản hơn sẽ không gặp phải các vấn đề này. Hoặc chỉ định cho khách hàng của bạn các cài đặt trình biên dịch dự kiến mà họ nên sử dụng (sẽ hút nếu thư viện khác chỉ định các cài đặt trình biên dịch khác).
Câu hỏi của tôi là liệu C ++ 11 có cố gắng làm bất cứ điều gì để giải quyết những vấn đề này không?
DLL
s. Giữa SO
s nó luôn hoạt động tốt.