跨两个DLL的`using`语句

时间:2009-12-21 11:46:25

标签: c++ windows dll visual-c++ overloading

我在一个DLL中定义了一个类,其中某个成员被重载。 第二个DLL导入该类,从中继承并导出继承的类。继承的类会覆盖上述成员的一个重载,因此会丢失所有其他重载。

这个问题的解决方案AFAIK通常使用using语句(using BaseClass::OverloadedMember;),但考虑到这种情况,我得到error C2487: 'BaseClass::OverloadedMember' : member of dll interface class may not be declared with dll interface(VC ++)。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

我将从新的DLL /类导出所有版本的重载函数。因此,不是使用using语句来公开基类版本,因为在这种情况下你不需要更改它们,我将实现显式调用基类版本的简单转发函数。我希望这可以解决您遇到的问题;但它不太理想。

答案 1 :(得分:1)

好吧,我无法测试细节,因为我没有VC ++,但一种方法是在基类中重新定义所有重载的方法并单独导出它们。

请记住,对于C ++来说,VC ++的导入/导出从未被认为是正确的。因此,您应该根据C ++特性保持导出类的简单性(using语句对于此目的而言过于复杂。)