在其命名空间中导出函数?

时间:2015-01-19 19:06:39

标签: c++ function dll namespaces export

我相当肯定这不是我读过和试过的可能。虽然代码的易用性和连续性我想在这里问。

是否可以将函数与其命名空间容器一起导出?

例如:

namespace Continuity
{
    int Foo(void);
}

标准用法为:Continuity::Foo();

我希望能够导出此函数以在DLL中使用,但我想将其保留在命名空间结构中,以便我可以在DLL中使用相同的用法。

2 个答案:

答案 0 :(得分:5)

你问:

  

是否可以导出函数及其命名空间容器示例:

是的,这是可能的。

使用:

namespace Continuity
{
   DLL_EXPORT int Foo(void);
}

DLL_EXPORT #define d __declspec(dllexport)__declspec(dllimport)的适当位置。

在构建DLL的项目中,您需要:

#define DLL_EXPORT __declspec(dllexport)

在使用DLL的项目中,您需要:

#define DLL_EXPORT __declspec(dllimport)

答案 1 :(得分:0)

在声明函数时,请确保不要使用extern“ C”,否则名称空间不会用于链接函数。然后,您可能在2个不同的命名空间中有2个具有相同功能的dll,但是根据功能的加载顺序,只会随机调用一个功能。