警告C4251:需要让dll接口供类的客户端使用

时间:2012-06-25 12:46:36

标签: c++

  

可能重复:
  std::vector needs to have dll-interface to be used by clients of class 'X<T> warning

这是我在这个小组中的第一篇文章。

我正在创建一个DLL并在应用程序的主文件中调用它。代码编译正常,但我收到以下错误:

 warning C4251: 'PNCBaseClass::m_vAvailChannelsFromRx' : class 'std::vector<_Ty>' needs to have dll-interface to be used by clients of class 'PNCBaseClass'
3>          with
3>          [
3>              _Ty=int
3>          ]

我的代码如下:

#define TEST_API __declspec(dllexport)
class TEST_API PNCBaseClass
{
public:
vector<int> m_vAvailChannelsFromRx
};

我已经找到了解决方案并尝试过失败。

我不想禁用警告。

1 个答案:

答案 0 :(得分:9)

永远不要将STL容器保留为导出的类成员。客户端应用程序可能使用不同的STL版本进行编译,具有未定义的运行时行为。 在您的情况下,很容易替换vector&lt; int&gt;指针向量&lt; int&gt; *的成员。在类构造函数中初始化它,并在类析构函数中释放。