c++ - 无法从另一个项目链接一个项目的头文件和 cpp 文件 LNK2019 : unresolved external symbol error

标签 c++ linker extern

我有一个头文件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/

相关文章:

c - 为什么 "const extern"报错?

c++ - C/C++ - HWInfo - libhd - 如何获取所有可用设备的名称列表?

c++ - 从 C++ 中的基类继承复制/移动构造函数作为构造函数

c - 如何反转 R_X86_64_JUMP_SLOT 重定位?

opencv - 在 Visual Studio 2012 中安装 OpenCV

c - 结构声明与定义

c - 外部数组的地址在编译单元之间不同

c++ - 链接到第三方共享库时出现 g++ undefined reference 错误

c++ - C++ Linux 中损坏的双链表

c++ - 链接器错误 - undefined reference