Visual Studio C++ 本机单元测试链接器错误 LNK2001 链接器找不到测试类成员变量

问题描述

这个问题对我来说似乎有点奇怪,但是链接器似乎无法找到它正在编译的类的类成员变量。请注意,这不是测试类找不到它正在测试的类的符号,而是它找不到属于自己的符号。

以下两个文件是registryreader项目的一部分,ReadValue函数是我们要测试的。 测试目标标头

//RegReader.h
#include <windows.h>
#include <string>

class RegReader
{
    public:
    wstring ReadValue();
}

测试目标 cpp 文件

//RegReader.cpp
#include RegReader.h

wstring RegReader::ReadValue()
{
    wstring returnvalue = blahblahCallToReadRegValue();
    return returnvalue;
}

以下是在registryreaderunittest项目中 registryreaderunittest.cpp

//registryreaderunittest.cpp
#include "pch.h"
#include <vector>
#include <string>
#include "..\lib\ApiRegReader.h"
#include "CppUnitTest.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace std;

namespace ApiRegReaderUnitTest
{
    TEST_CLASS(ApiRegReaderUnitTest)
    {
    public:

        static wstring testkeybase;
        TEST_CLASS_INITIALIZE(ApiRegReaderTestSetup)
        {
            Init();
            
        }
        TEST_CLASS_CLEANUP(ApiRegReaderTestCleanup)
        {
            DeleteTestRegKey();
        }
        TEST_METHOD(CreateDword)
        {
           RegReader r;

           wstring value = r.ReadValue();
           Assert::AreEqual(testkeybase,value);
         }
        
         static void Init();
     };

void ApiRegReaderUnitTest:Init()
{
    testkeybase = L"valuetoread";
}
}

现在 reg 阅读器项目编译没有问题。 当我尝试编译单元测试时,无论是作为解决方案的一部分还是由我自己得到

错误 LNK2001: 未解析的外部符号“public: static class std::basic_string,class std::allocator > ApiRegReaderUnitTest::ApiRegReaderUnitTest::testkeybase” (?testkeybase @ApiRegReaderUnitTest@1@2V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@A)

为什么链接器找不到位于它自己的 obj 文件中的 wstring

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)