首页 > 解决方案 > C++ LNK2019 | 未解决的符号 | 视觉工作室 2013 | 虚拟功能 | 测试

问题描述

此错误已多次报告,但我找不到我要查找的内容。以下是构建错误

错误 LNK2019:未解析的外部符号“public: enum CLASS_ID __thiscall smp::sampleAbs::getClassID(void)” (?getClassID@sampleAbs@smp@@QAE?AW4CLASS_ID@@XZ) 在函数“public: virtual void __thiscall mockSmp: :run(void)" (?run@mockSmp@@UAEXXZ)
错误 LNK2001:未解析的外部符号“公共:枚举 CLASS_ID __thiscall smp::sampleAbs::getClassID(void)”(?getClassID@sampleAbs@smp@@QAE?AW4CLASS_ID@@XZ)  
错误 LNK2019:函数“public: __thiscall mockSmp::mockSmp( void)" (??0mockSmp@@QAE@XZ)

这是我的代码。

样本Abs.h

typedef enum 
{
    //sample enum values

}CLASS_ID;

namespace smp {

class sampleAbs
{
public:
    sampleAbs(CLASS_ID classID);
    ~sampleAbs(void) {}
    CLASS_ID getClassID(void);
    virtual void run() = 0;

private:
    CLASS_ID m_classId;
};  
}

样本Abs.cpp

#include "sampleAbs.h"

namespace smp {

sampleAbs :: sampleAbs(CLASS_ID classID)
{
    m_classID = classID;
}

CLASS_ID
sampleAbs:: getClassID(void)
{
    
    return m_classID;
}

}

mock_sampleAbs.h

#include "sampleAbs.h"
using namespace smp
class mockSmp : public sampleAbs
{
public:
    CLASS_ID m_classID = 1;
    mockSmp() : sampleAbs(m_classID){}
    ~mockSmp();

    void run()
    {
        m_classID = getClassID();
    }
};

测试.cpp

#include "mock_sampleAbs.h"
#include "gtest/gtest.h"

using namespace cmd;

TEST(test_getCommandID00, FunctionCoverage)
{
    mockSmp mObj;
    mObj.run();
    EXPECT_EQ(1, mObj.m_commandID);
}

我不确定我做错了什么,可能是一些愚蠢的事情。将不胜感激任何帮助。谢谢!

标签: c++visual-studio-2013googletestlnk2019

解决方案


推荐阅读