我有一个简单的C ++类,如下所示:
class __declspec(dllexport) PrefData
{
public:
PrefData();
int m_data_member;
};
std::ostream& operator<<(std::ostream& os, const PrefData& obj);
这导致未解决的外部符号class std::basic_ostream > & __cdecl cop4530::operator<<
出现未解决的外部错误。现在,我试图让它成为一个类成员:
class __declspec(dllexport) PrefData
{
public:
PrefData();
int m_data_member;
friend std::ostream& operator<<(std::ostream& os, const PrefData& obj);
};
这也导致了同样的错误。但是,当我将其导出为:
class __declspec(dllexport) PrefData
{
public:
PrefData();
int m_data_member;
};
__declspec(dllexport) std::ostream& operator<<(std::ostream& os, const PrefData& obj);
这链接很好。因为dllexport
被应用于整个班级,所以我不确定为什么它是一个类成员函数时没有链接?其次,导出这个运营商是个坏主意吗?我在某处读到这可能不是一件好事,但我无法弄清楚细节。