Có an toàn khi sử dụng một STL tuân thủ tiêu chuẩn trong thư viện và một STL khác trong dự án sử dụng thư viện đó không? Ví dụ:Sử dụng STL trong thư viện nguồn đóng
//library.h
#include <string> //let's say here it uses minGW STL
void Foo(std::string& str_mingw);
//library.cpp
void Foo(std::string& str_mingw) { /*do something*/ }
//application.cpp
#include "library.h"
#include <string> //let's say here it uses VStudio STL
void Bar()
{
std::string str_vstudio;
Foo(str_vstudio);
//Foo() inside the .lib or .dll uses string from minGW,
//but here a string from VStudio is used
}
Dường như với tôi rằng những điều xấu sẽ xảy ra, đặc biệt nếu những gì được sử dụng không phải là chuỗi đơn giản nhưng phức tạp hơn như tr2 :: thread. Nhưng nếu vậy, làm thế nào tôi có thể biên dịch một thư viện trong một trình biên dịch và để cho người dùng thư viện tự do lựa chọn trình biên dịch ưa thích của họ cho các dự án của họ?
Windows/MinWG n00b hỏi: tại sao bạn không thể sử dụng VS STL với MinGW? – Dummy00001
Không nên tiêu đề thực sự giống như "sử dụng nhiều thư viện chuẩn trong một dự án duy nhất"? Đóng nguồn không có vẻ liên quan đến câu hỏi thực tế đang được hỏi. –
@Mark B Tôi đã chỉ định "nguồn đóng" vì một thư viện nguồn mở có thể được biên dịch bởi khách hàng với bất kỳ STL nào họ thích, vì vậy chắc chắn không có vấn đề gì. – user418680