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

Export a function within its namespace?

根据我的阅读和尝试,我相当确定这是不可能的。尽管为了代码的简便性和连续性,我想在这里问一下。

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

例如:

namespace Continuity
{
    int Foo(void);
}

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

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

您问的是:

Is it possible to export a function along with it's namespace container example:

是的,有可能。

使用:

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)

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