|
1
5
通过DLL以类的形式提供功能本身就很好。但是,您需要小心地将interrface与实现分离开来。谨慎程度取决于DLL的使用方式。对于仍然是内部的玩具项目或实用程序,您可能甚至不需要考虑它。对于将由多个客户机在不知道哪个编译器下使用的dll,您需要非常小心。
如果
解决这个问题的一个办法是 interfaces . 在DLL的公共标头中,声明一个抽象类,表示DLL提供的有用功能,以及创建该类的方法,例如:
…然后在DLL的内部,定义一个实际实现
mygizmo.cpp:
这似乎是一种痛苦,是的。如果您的DLL只在内部由一个编译器使用,那么就没有理由去麻烦了。但是,如果您的DLL将被我的多个编译器内部使用,或者被外部客户机使用,那么这样做可以避免以后的主要麻烦。 |
|
|
2
2
|
|
|
3
2
福住在哪里?在另一个dll中。 合理吗?不是真的。 如果您声明这样的类: 类declspec(dllexport)Foo{。。。 然后msvc将导出类的每个成员函数。但是,生成的dll非常脆弱,因为对类定义的任何微小更改,如果没有对每个消费dll进行相应的重新生成,则意味着消费代码将为工厂函数未执行的任何堆栈和堆分配分配不正确的字节数。同样,内联方法将编译成消费DLL并引用类的旧布局。 如果所有DLL总是一起重建,那么继续。如果没有-不要:P |
|
0___________ · 我可以在整个程序生命周期内保持句柄打开吗 2 年前 |