когда я пытаюсь использовать отдельные *.h и *.cpp, я получаю ошибку LINK2019

#visual-c

#visual-c

Вопрос:

У меня есть код, подобный

 A.h
Class A{
  public:
    void FuncA();
}

A.cpp
#include "A.h"
void A::FuncA() {}

B.h
#include "A.h"

Class B{
  public:
    void FuncB();
}

B.cpp
#include "B.h"
void B::FuncB(){
  A *a = new A();
  a->FuncA();
}
  

Когда я пытаюсь собрать этот проект, я получаю «ошибку LNK2019: неразрешенный внешний символ «public: void __этот вызов A:: funcA()» (?funcA @ A @@QAEXH @ Z), на который ссылается функция «public: void __этот вызов B::funcB(void)» (?funcB @ B @@MAEXXZ) B.obj project»

Это создает A.obj и B.obj.

Комментарии:

1. У вас отсутствуют точки с запятой после закрывающих фигурных скобок в объявлениях вашего класса. Я не думаю, что проблема в этом.

Ответ №1:

Код выглядит нормально. Сначала убедитесь, что все перестроено и что A.obj действительно отправлен компоновщику.


Ответ на комментарий

Проверьте журнал сборки в VS2008. Смотрите рисунок ниже:

введите описание изображения здесь

Комментарии:

1. как я могу убедиться, что A.obj отправлен? Я использую VS2008

2. хм, это странно, я создал новый проект, добавил эти файлы, и теперь он работает нормально. Спасибо.