导出其命名空间内的功能?

问题描述 投票:2回答:2

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

是否有可能与它的命名空间容器一起导出的函数吗?

例如:

namespace Continuity
{
    int Foo(void);
}

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

我希望能够导出此功能在DLL使用,但是我想保持它在命名空间结构,使我可以使用DLL中的用法相同。

c++ function dll namespaces export
2个回答
5
投票

您询问:

是否有可能随着它的命名空间容器例如导出功能:

对的,这是可能的。

采用:

namespace Continuity
{
   DLL_EXPORT int Foo(void);
}

其中DLL_EXPORT#defined要么__declspec(dllexport)__declspec(dllimport)适当。

在你建立的DLL项目,您需要:

#define DLL_EXPORT __declspec(dllexport)

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

#define DLL_EXPORT __declspec(dllimport)

0
投票

确保不使用的extern“C”声明,否则不用于连接功能的命名空间中的功能时。然后,您可以有2个DLL文件在2名不同的命名空间相同的功能,但只有一个功能会随机基于功能的加载顺序上调用。

© www.soinside.com 2019 - 2024. All rights reserved.