Как решить LNK2001 - PullRequest
       32

Как решить LNK2001

0 голосов
/ 16 августа 2011

У меня есть набор кода, написанного в VS 6. Я пытаюсь написать оболочку CLI для этого в VS 2008. Я включил один из заголовочных файлов VS6 в код CLI и скомпилировал.При компиляции получаюLNK2001: unresolved external symbol "public: virtual void __thiscall Someclass::SomeMethod(SomeObject& os).Когда я искал метод и класс в ошибке, он соответствует коду,

Файл заголовка.

class SomeClass: public ParentClass
 {
  virtual void SomeMethod(SomeObject& os);
}

Файл CPP

void SomeClass::SomeMethod(SomeObject& os)
{
//Implementation here
}

SomeMethod фактически переопределяется из ParentClass

Когда я делаю объявление в заголовочном файле, добавляя открытые и закрытые фигурные скобки как

virtual void SomeMethod(SomeObject& os) {};

, ошибка исчезает.Но я не могу этого сделать, так как это приведет к тому, что один метод будет иметь два тела.Почему это поведение?Как мне это преодолеть?Или мне нужно поместить #pragma при включении заголовков BS6 в CLI?

1 Ответ

2 голосов
/ 16 августа 2011

Звучит так, как будто вы не включили 'CPP File' в ваш проект. Это также объясняет, почему вы не получаете ошибку, когда у вас есть два тела. Чтобы проверить это, попробуйте добавить преднамеренную ошибку компиляции в файл CPP. Если компилятор не жалуется, это доказывает, что вы не компилируете файл CPP.

...