У меня была очень странная проблема с заголовком precompile. Линкер генерирует LNK2019: неразрешенная внешняя ошибка символа, когда я реализую метод в файле .cpp. Тем не менее, программа может быть скомпилирована, если я реализую метод в файле .h. Мне удалось найти решение, но я понятия не имею о первопричине этой ошибки.Visual C++ Связь LNK2019 Ошибка с предварительно скомпилированным заголовком
Моя структура проекта выглядит следующим образом
Solution
-> Проект 1
-> 2 проекта
Project 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. Я хочу использовать класс A.
файл whatever.cpp
#include "stdafx.h"
#include "../Project1/A.h"
...
A* a_obj = new A();
...
В время компиляции сообщения компоновщика неразрешенный внешний символ ошибки для функции сооружения. Если я реализую конструктор в файле A.h. проект2 может быть успешно выполнен. Я хочу знать, почему нельзя поместить реализацию в файл A.cpp? Каков правильный способ организации заголовка precompile?
Спасибо
Спасибо, Второй подход хорошо работает для меня – LNK2019