我有一个头文件A.h
namespace DIV
{
int Fun();
}
源文件A.cpp
namespace DIV
{
class A
{
public:
A(){}
~A(){}
int Fun();
};
int A::Fun()
{
return 0;
}
}
现在我在同一解决方案的另一个项目中有另一个源文件 B.cpp。
此源使用谷歌的 GTest 框架。在我使用的测试函数中
#include "gtest/gtest.h"
#include "A.h"
TEST(FunTest, Param)
{
int value = DIV::Fun();
}
由于 DIV::Fun()
调用,我收到链接器错误。我不明白链接器错误背后的原因。
编辑: B.cpp 在 .exe 项目中,A.h/cpp 在 lib 项目中。
最佳答案
问题解决了。我从here得到了答案.总而言之,我需要将我的 exe 项目与包含函数 fun()
的 lib 项目链接起来。现在,使 .exe 项目链接到 .lib 项目的最简单方法可能是添加引用:
- 在 .exe 项目的设置中,选择位于部分列表顶部的名为“公共(public)属性”的部分。
- 您现在应该看到 .exe 项目具有的引用列表。该列表可能是空的。
- 单击对话框底部的“添加新引用”按钮并将 .lib 项目添加为引用
- 当您在引用列表中选择新引用时,您将看到该引用的一组属性。确保名为“Link Library Dependencies”的属性设置为 true。这将导致在构建 .exe 项目时将 .lib 项目自动添加为链接器的输入。
之后链接器错误就消失了。
关于c++ - 无法从另一个项目链接一个项目的头文件和 cpp 文件 LNK2019 : unresolved external symbol error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22369339/