视觉C++联LNK2019错误有一个编译头
-
12-09-2019 - |
题
我有一个非常奇怪的问题与预编译头。连接产生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.我想要使用的一类。
文件whatever.cpp
#include "stdafx.h"
#include "../Project1/A.h"
...
A* a_obj = new A();
...
在汇编时,连接的报告尚未解决的外部符号错误的一个建设功能。如果我实现的constructor in A.h文件。该项目2可能是成功的遵守。我想知道,为什么不能把执行中A.cpp 文件?什么是正确的方式组织预编译头?
谢谢你
解决方案
项目2不包括定义的一个构造一的方式给它的可见性,这是对的定义包括在该标题的文件(这你有没有).
另一种方式将包括A.cpp 文件在项目2.
第三种方式就是出口的一类,或构造中使用的一个。def文件或使用 dllexport
指令。
把这个编译头文件:
// set up export import macros for client project use
// define the symbol "PROJ1" before including this file in project 1 only
// leave it undefined for other projects
#ifdef PROJ1
#define DLLEXP __declspec(dllexport)
#else
#define DLLEXP __declspec(dllimport)
#endif
然后宣布的一类在一个标题:
DLLEXP class A
{
public:
A();
...
};
或者:
class A
{
public:
DLLEXP A();
...
};
不隶属于 StackOverflow