Dll导出朋友运营商>>

时间:2016-04-05 12:33:10

标签: c++ visual-c++ visual-studio-2015

我正在创建这个类:

///> MyObject.h file
class __declspec(dllexport) CMyObject
{
public:
    int m_Intero;
public:
    CMyObject();
    ~CMyObject();
public:
    friend std::wifstream& operator>>(std::wifstream& is, CMyObject& eprt);
}
///> MyObject.cpp
std::wifstream& operator>>(std::wifstream& is, CMyObject& myobj)
{
    if (is.is_open())
        ///> Input operations.

    return is;
}

当我编译库时,我没有错误,但是当我在最终项目中使用我的库时,我得到了这个错误:

LNK2019 unresolved external symbol reference "class std::basic_ifstream<wchar_t,struct std::char_traits<wchar_t> > & __cdecl operator>>(...) in function "public: void __thiscall ...

我想我必须以某种方式指定我的运算符&gt;&gt;功能必须导出。

我应该如何修改我的代码?

1 个答案:

答案 0 :(得分:0)

几个方面:

  • 您正在导出类,而不是全局(朋友)函数。您只是让编译器知道全局函数(运算符重载)是朋友。您需要导出该功能。
  • 当涉及C ++对象时,最好不要导出这样的函数,因为编译器差异会使类具有不同的大小。