c++ - 错误: LINK2019: unresolved external symbol when using operator << in a namespace

标签 c++ compiler-errors linker-errors

我在Windows中收到以下错误。

我有一个库L1,它具有以下头文件及其实现

namespace TC
{
    namespace VT
    {
        enum Value
        {
            INVALID = 0,
            Light = 1

        };

        std::ostream& operator<<(std::ostream& os, Value value);
    }
}

还有另一个库L2,它使用运算符<<。代码编译器很好,但是会导致无法解决的外部符号错误。这意味着在链接时没有找到操作符<<。

L2库中的代码。
bool Mock::Test(
    TC::VT::Value venue )
{

    string func(__func__);

    cout << func

         << "venue = "
         << venue

         << endl;

    return false;
}

cout行是导致问题的原因之一。

MockClient.obj:错误LNK2019:未解析的外部符号“类std::basic_ostream>&__cdecl TC::VT::operator <<(类std::basic_ostream>&enum TC::VT::Value)”

最佳答案

这里发生三件事之一。您没有链接到包含运算符定义的目标文件,或者没有为运算符提供定义,或者没有正确定义运算符。由于您已声明目标文件已链接,因此应确保对操作符的定义正确。您的定义应如下所示

std::ostream& TC::VT::operator<<(std::ostream& os, Value value)
{
    // ... your code here
    return os;
}

或者应该将其包装在 namespace 中
namespace TC
{
    namespace VT
    {
        std::ostream& TC::VT::operator<<(std::ostream& os, Value value)
        {
            // ... your code here
            return os;
        }
    }
}

关于c++ - 错误: LINK2019: unresolved external symbol when using operator << in a namespace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20956571/

相关文章:

python - 写入csv时发生Python错误。我究竟做错了什么?

c++ - std::source_location 作为非类型模板参数

c++ - AfxMessageBox 出现在 MFC 对话框后面

c++ - Dev C++中的嵌入式SQL

C++ 链接器错误 : undefined reference to a static function

c++ - 链接器错误已定义

c - 将静态库与 C 数学库正确链接

c++ - 制作一个以坐标为键的 std::map

c++ - 错误: aggregate ‘HMAC_CTX ctx’ has incomplete type and cannot be defined

compiler-errors - 在Modelsim VHDL中编译