我正在为我的项目编写一些utils函数。当我尝试使用嵌套命名空间中的某些函数时,我收到了一个奇怪的LNK2019错误。我试图在谷歌和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);
}
}
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和Im中使用项目B中的那些函数。如果我在我的函数原型中使用__declspec(dllexport)
我可以在项目B中使用这些函数,因为它使用类似DLL的函数。我在How to use functions from different C++ projects in Visual Studio 2010?(@Luchian Grigore回复)和Visual studio: question about linking functions between two projects(@dascandy回复)中得到了这个提示。
答案 0 :(得分:0)
如果函数的代码在不同的项目中,则必须将其编译为静态或动态库,然后将库添加到Linker&gt;下项目选项中的调用项目中。输入&gt;附加依赖项(适用于MS Visual Studio)。
答案 1 :(得分:0)
你需要做两件事: