- ベストアンサー
dllエクスポート時のdeclspec(dllexport)について
いつも拝見しています。 さっそくですが質問いたします。 C++の経験が浅いもので言動がおかしい箇所もあるかと思いますが、ご容赦願います。 現在dllを作成してエクスポートを行おうとしています。 エクスポートには__declspec(dllexport)を使用しています。 そこでstd::listの型を定義しているのですがビルドを行うと下記エラーメッセージが警告で発生します。 警告 14 warning C4251: 'XXXXX' : class 'std::list<_Ty>' は __export キーワードを使って class 'YYY' にエクスポートしてください。 d:\module\YYY.h 12 上記メッセージが発生していた場合は外部からdllをロードした際にエラーが発生してしまうものでしょうか? (標準ライブラリのlist定義にも何らかの形で__declspec(dllexport)を指定しなければならないのでは?と勝手に考えています。) また、上記の場合にロードエラーが発生するものだとすれば回避策はあるのでしょうか? 参考になるURL等でも結構ですのでご教授お願い致します。 実行環境 Visual C++ 2005 テストコード #include <list> class _declspec(dllexport) test { private: std::list<char> _configs; ← これがあると警告発生 public: test(void); virtual ~test(void); };
- みんなの回答 (2)
- 専門家の回答
お礼
なるほど。拝見させて頂きました。 参照するにlistはdllからの受け渡しには使用できないということなんでしょうか? この参考文献を見る前に警告が出ている状態で動作の確認をしてみたのですが、dllからしっかり受け渡しが出来ているように動作してしまいました。。動作はするがメモリの管理が出来ない状態なのかよくわかりませんが。。 (受け渡しは簡単なプロパティを作成して外部から作成したlistをセットしてゲットしただけです) 動作してしまっているのがよくわからないのでもう少し調査を進めてみます。ありがとうございました。