C++ 是否在其命名空间内导出函数?

C++ 是否在其命名空间内导出函数?,c++,function,dll,namespaces,export,C++,Function,Dll,Namespaces,Export,从我所读到的和尝试过的,我相当肯定这是不可能的。虽然为了代码的简单性和连续性,我想在这里问一下 是否可以将函数及其命名空间容器一起导出 例如: namespace Continuity { int Foo(void); } 标准用法是:Continuity::Foo() 我希望能够导出此函数以在DLL中使用,但我希望将其保留在命名空间结构中,以便在DLL中使用相同的用法。您询问: 是否可以将函数与其命名空间容器一起导出示例: namespace Continuity { int

从我所读到的和尝试过的,我相当肯定这是不可能的。虽然为了代码的简单性和连续性,我想在这里问一下

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

例如:

namespace Continuity
{
    int Foo(void);
}
标准用法是:
Continuity::Foo()

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

您询问:

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

namespace Continuity
{
    int Foo(void);
}
是的,这是可能的

使用:

其中
DLL\u EXPORT
#将
d定义为
\u declspec(dllexport)
\u declspec(dllimport)

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

#define DLL_EXPORT __declspec(dllexport)
#define DLL_EXPORT __declspec(dllimport)
在使用DLL的项目中,您需要:

#define DLL_EXPORT __declspec(dllexport)
#define DLL_EXPORT __declspec(dllimport)

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

这已经很旧了,因此我希望您能够回答。名称空间是否以任何方式影响dll的调用?如果没有,我可以摆脱它,如果我的项目中没有副作用。你说调用dll是什么意思?如果我调用一个dll函数,比如
\u AddFunc=(AddFunc)GetProcAddress(hInstLibrary,“Add”)
,名称空间是出现在这里的任何地方还是只是“死了”?@MaestroGlanz,我没有这方面的经验。然而,在SO中搜索会产生很多问题和答案。