在其名称空间中导出函数?
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
是 #define
d 到 __declspec(dllexport)
或 __declspec(dllimport)
适当。
在构建 DLL 的项目中,您需要:
#define DLL_EXPORT __declspec(dllexport)
在使用 DLL 的项目中,您需要:
#define DLL_EXPORT __declspec(dllimport)
确保在声明函数时不要使用 extern "C" 否则命名空间不会用于链接函数。然后,您可能在 2 个不同的命名空间中有 2 个具有相同功能的 dll,但只会根据函数加载的顺序随机调用一个函数。
根据我的阅读和尝试,我相当确定这是不可能的。尽管为了代码的简便性和连续性,我想在这里问一下。
是否可以将函数与其命名空间容器一起导出?
例如:
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
是 #define
d 到 __declspec(dllexport)
或 __declspec(dllimport)
适当。
在构建 DLL 的项目中,您需要:
#define DLL_EXPORT __declspec(dllexport)
在使用 DLL 的项目中,您需要:
#define DLL_EXPORT __declspec(dllimport)
确保在声明函数时不要使用 extern "C" 否则命名空间不会用于链接函数。然后,您可能在 2 个不同的命名空间中有 2 个具有相同功能的 dll,但只会根据函数加载的顺序随机调用一个函数。