如何解决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
为什么链接器找不到位于它自己的 obj 文件中的 wstring
?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。