#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. хм, это странно, я создал новый проект, добавил эти файлы, и теперь он работает нормально. Спасибо.