这是我在这个小组中的第一篇文章.
我正在创建一个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> ]
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
#define TEST_API __declspec(dllexport)
class TEST_API PNCBaseClass
{
public:
vector<int> m_vAvailChannelsFromRx
};
Run Code Online (Sandbox Code Playgroud)
我已经找到了解决方案并尝试并失败了.
我不想禁用警告.
永远不要将STL容器保留为导出的类成员.客户端应用程序可能使用不同的STL版本进行编译,具有未定义的运行时行为.在您的情况下,很容易用指针向量<int>*替换vector <int>成员.在类构造函数中初始化它,并在类析构函数中释放.
| 归档时间: |
|
| 查看次数: |
21012 次 |
| 最近记录: |