我正在为我的项目编写一些实用程序函数。当我尝试使用嵌套命名空间中的一些函数时,出现了一个奇怪的 LNK2019 错误。我试图在 google 和 stackoverflow 中进行搜索,但没有得到任何帮助。
我的文件
头文件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);
}
}
文件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 中使用这些函数,因为它使用像 DLL 一样的 A。我在如何在 Visual Studio 2010 中使用来自不同 C++ 项目的函数?(@Luchian Grigore 回复)和Visual Studio:关于两个项目之间的链接功能的问题(@dascandy 回复)。