Неразрешенный внешний символ после каждого изменения в коде - PullRequest
2 голосов
/ 31 июля 2011

У меня проблема с моим кодом. В основном это выглядит так:

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 () четко определен в someclass.cpp.

Что может быть источником этого?

1 Ответ

1 голос
/ 31 июля 2011

В дополнение к тому, что говорит @Nawaz, вероятно, ваши файлы сборки не синхронизированы с компоновщиком, поэтому, когда Visual Studio переходит на повторную ссылку, это невозможно, потому что файлы не синхронизированы.Просто пересоберите и покончите с этим.

Кстати, это может быть даже ошибка в Visual Studio 2010 , как видно здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...