问题描述
这个问题对我来说似乎有点奇怪,但是链接器似乎无法找到它正在编译的类的类成员变量。请注意,这不是测试类找不到它正在测试的类的符号,而是它找不到属于自己的符号。
以下两个文件是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 (将#修改为@)