2011-07-31 31 views
2

我的代码出现问题。它基本上是这样的:每次更改代码后无法解析的外部符号

someclass.hpp:

class SomeClass 
{ 
public: 
    SomeClass(); 
    ~SomeClass(); 

    //... some other methods 
}; 

someclass.cpp:

#include "SomeClass.hpp" 
SomeClass::SomeClass() 
{ 
} 

SomeClass::~SomeClass() 
{ 
} 

SomeClass.cpp不包括其他任何东西。

构造函数实际上也是空的。我只是不想让它们未定义或者离开标准构造函数,因为我可能稍后需要它。

SomeClass.hpp实际上是包含在仅一个地方的游戏状态类:

的main.cpp

#include "SomeClass.hpp" 

int main() 
{ 
    DoSomethingWithGamestate(new SomeClass()); 
    return 0; 
} 

,并在项目包括了很多其他的文件,所有这些都是但是,与SomeClass无关。

的问题是,每当我在代码改变任何东西,不管在哪个文件,我有,因为如果我只编译更改链接抛出这个重新编译整个解决方案:

error LNK2001: unresolved external symbol "public: __thiscall SomeClass::SomeClass(void) (??blablaSomeClassblabla) 

显然,这里有一些奇怪的事情发生,因为SomeClass()在某些class.cpp中是明确定义的。

这可能是什么原因?

回答

1

除了@Nawaz所说的之外,很可能您的构建文件与链接器不同步,所以当Visual Studio重新链接时,它不会因为文件不同步。只需重新构建并完成它。

顺便说一下,它甚至可能是Visual Studio 2010 as seen here中的一个错误。

+0

我在问,因为重建整个项目几个变化是令人难以置信的麻烦,因为它需要一段时间(现在大约2分钟,这个数字肯定会随着时间的推移相当快地增长)并减缓调试吨。有没有办法确保构建文件保持最新?我可以手动更新它们而无需重建整个事物吗? – TravisG

+0

@heishe:重建是一种痛苦,是的。你可以尝试“制作”文件。 – 2011-07-31 13:07:28