尝试使用命名空间中的函数时LNK2019错误

Error LNK2019 when try to use function from namespace

本文关键字:函数 LNK2019 错误 命名空间      更新时间:2023-10-16

我正在为我的项目编写一些实用程序函数。当我尝试使用嵌套命名空间中的某些函数时,我遇到了一个奇怪的LNK2019错误。我试图在谷歌和堆栈溢出中搜索,但我没有得到一些可以帮助我的东西。

我的文件

头文件X.h

#pragma once
namespace A {
    namespace B {
        /**
         * A função recebe edValue e devolve em ponto flutuante
         * o inteiro mais próximo de edValue.
         * 
         * Método usado: http://en.wikipedia.org/wiki/Directed_rounding#Round_half_up
         *
         * @param edValue valor que será arredondado.
         * @return o inteiro mais próximo à edValue (em ponto flutuante).
         */
        double round(double edValue);
    }
}

CPP 文件X.cpp

#include "StdAfx.h"
#include "X.h"
#include <cmath>
double A::B::round(double edValue)
{
    return floor(edValue + 0.5);
}

错误信息

7>D.obj : error LNK2019: unresolved external symbol "double __cdecl A::B::round(double)" (?round@A@B@@YANN@Z) referenced in function "public: void __thiscall

编辑(解决我的问题)

我的文件X.{h,cpp}在项目 A 中,我在项目 B 中使用这些功能。如果我在函数的原型中使用__declspec(dllexport),我可以在项目 B 中使用这些函数,因为它使用类似于 A 的 DLL。我在如何使用Visual Studio 2010中来自不同C++项目的函数中得到了这个提示?(由@Luchian Grigore回复)和Visual Studio:关于在两个项目之间链接功能的问题(由@dascandy回复)。

如果函数的代码位于其他项目中,则必须将其编译为静态或动态库,然后将库添加到链接器>输入>其他依赖项(对于 MS Visual Studio)下的项目选项中的调用项目。

你需要做两件事:

  • 在"链接器>常规>其他依赖项 + - 指定在链接器>输入>其他依赖项下使用的库的路径
相关文章: