与警告C4251' X'相关的问题需要有dll-interface才能被类' Y'的客户使用。在这里解释得非常好:How can I use Standard Library (STL) classes in my dll interface or ABI?
为什么不让我们说std :: string作为从库中导出的类中的成员并不是一个好主意的原因对我来说是明确的,这是有道理的。但是,如果我使用std :: string作为参数类型或返回类型,我真的不明白为什么它不是问题?
class DllPort SampleClass
{
private:
std::string privateMember; // Warning C4251
public:
std::string publicMember; // Warning C4251
std::string publicFunction1(); // compiler says it is OK
void publicFunction2(std::string value);// compiler says it is OK
};
我使用的是Visual Studio 2015。