У меня была очень странная проблема с заголовком прекомпиляции. Компоновщик генерирует LNK2019: неразрешенная ошибка внешнего символа, когда я реализую метод в файле .cpp. Тем не менее, программа может быть скомпилирована, если я реализую метод в .h файле. Мне удалось найти решение, но я понятия не имею о первопричине этой ошибки.
Структура моего проекта выглядит так
Решение
-> проект 1
-> проект 2
Проект 1 имеет 3 файла. A.h, A.cpp и stdafx.h
file A.h
#pragma once
class A
{
public:
int num;
A();
};
file A.cpp
#include "stdafx.h"
A::A()
{
num = 2;
}
file stdafx.h
...
#include "A.h"
...
В проекте 2. Я хочу использовать класс А.
файл what.cpp
#include "stdafx.h"
#include "../Project1/A.h"
...
A* a_obj = new A();
...
Во время компиляции компоновщик сообщает о неразрешенной внешней ошибке символа для функции построения A. Если я реализую конструктор в файле A.h. проект2 может быть успешно выполнен. Я хочу знать, почему нельзя поместить реализацию в файл A.cpp? Как правильно организовать прекомпиляцию заголовка?
Спасибо