程序中消除warning有兩種方法:消極一點(diǎn)不去理他,反正不是error:-);積極一點(diǎn),則想辦法去掉。去掉又用兩種方法:一種使用#pragma warning(disable: xxxx),眼不見,心不煩;另外就是找出解決問題的辦法了。
今天做dll庫時(shí),在struct中用到了stl:
class CLASS_TEST
{
...
private:
std::vector<MY_STRUCT> m_structs;
}
但是編譯時(shí),vs2005給出了warning C4251: 'CLASS_TEST::m_structs' : class 'std::vector<_Ty>' needs to have dll-interface to be used by clients of class ‘CLASS_TEST’的警告信息。費(fèi)了很大的勁才解決掉,記錄下來。
在頭文件中,定義宏
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
現(xiàn)在,在變量m_structs前,添加:
template class MYDLL_API std::allocator<myStruct>;
template class MYDLL_API std::vector<myStruct, std::allocator<myStruct> >;
這樣,即可以了。
posted on 2010-04-07 08:57
小王 閱讀(787)
評(píng)論(1) 編輯 收藏 引用 所屬分類:
c++ 程序設(shè)計(jì)基礎(chǔ)