6

重複の可能性:
std::vector には、クラス 'X<T> 警告のクライアントが使用する dll-interface が必要です

これは、このグループでの最初の投稿です。

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
};

私は解決策を探し、試して失敗しました。

警告を無効にしたくありません。

4

1 に答える 1

10

STLコンテナをエクスポートされたクラスメンバーとして保持しないでください。クライアントアプリケーションは、実行時の動作が定義されていない、お使いのSTLバージョンとは異なるSTLバージョンでコンパイルされている可能性があります。あなたの場合、vector<int>メンバーをポインターvector<int>*に置き換えるのは簡単です。クラスコンストラクタで初期化し、クラスデストラクタで解放します。

于 2012-06-25T12:51:01.810 に答える