我对预编译头有一个非常奇怪的问题。当我在 .cpp 文件中实现方法时,链接器生成 LNK2019: unresolved external symbol 错误。但是,如果我在 .h 文件中实现方法,则可以编译程序。我碰巧找到了解决方案,但我不知道这个错误的根本原因。
我的项目结构是这样的
解决方案
-> 项目 1
-> 项目 2
项目 1 有 3 个文件。啊,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 构造函数的未解决的外部符号错误。如果我在 Ah 文件中实现构造函数。project2 可以成功编译。我想知道,为什么不能把实现放在 A.cpp 文件中?组织预编译头文件的正确方法是什么?
谢谢