我相当肯定这不是我读过和试过的可能。虽然代码的易用性和连续性我想在这里问。
是否可以将函数与其命名空间容器一起导出?
例如:
namespace Continuity
{
int Foo(void);
}
标准用法为:Continuity::Foo();
我希望能够导出此函数以在DLL中使用,但我想将其保留在命名空间结构中,以便我可以在DLL中使用相同的用法。
答案 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,但是根据功能的加载顺序,只会随机调用一个功能。