我的代码有问题。它基本上看起来像这样:
一些类.hpp:
class SomeClass
{
public:
SomeClass();
~SomeClass();
//... some other methods
};
一些类.cpp:
#include "SomeClass.hpp"
SomeClass::SomeClass()
{
}
SomeClass::~SomeClass()
{
}
SomeClass.cpp 不包含任何其他内容。
构造函数实际上也是空的。我只是不想让它们未定义或留下标准构造函数,因为我以后可能会需要它。
SomeClass.hpp 实际上是一个 gamestate 类,它只包含在一个地方:
主要.cpp
#include "SomeClass.hpp"
int main()
{
DoSomethingWithGamestate(new SomeClass());
return 0;
}
然后该项目由许多其他文件组成,但所有这些文件都独立于 SomeClass。
问题是每当我更改代码中的任何内容时,无论在哪个文件中,我都必须重新编译整个解决方案,因为如果我只编译更改,链接器会抛出此错误:
error LNK2001: unresolved external symbol "public: __thiscall SomeClass::SomeClass(void) (??blablaSomeClassblabla)
显然,这里发生了一些奇怪的事情,因为在 someclass.cpp 中明确定义了 SomeClass()。
这可能是什么来源?
最佳答案
除了@Nawaz 所说的之外,您的构建文件可能与链接器不同步,因此当 Visual Studio 重新链接时,它不能,因为文件不同步。只需重新构建并完成它。
顺便说一下,它甚至可能是 Visual Studio 2010 中的一个错误 as seen here .
关于c++ - 每次更改代码后都无法解析外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6889565/