我是在C ++中使用DLL的新手,我想知道如何成功加载和使用DLL 中包含的类而不会得到一个"损坏的堆栈",a "空指针"或任何应用程序崩溃^^ 。这对我来说有点让人困惑。 即使它可能更安全,我也不想使用接口类,因为它看起来太复杂了。我知道我应该在DLL和应用程序中都有相同的包含以防止崩溃。这意味着我的包含文件应该提到成员名称。
以下是问题:
我想发布我的软件(DLL +包含文件),我不想要 我的客户看到我的项目的架构。但是唯一的课程 我想从我的DLL导出具有成员,来自其他的对象 类。所以我的班级依赖于其他班级等等 级联。
是否可以只使用有用的方法提供一个类的一个包含文件而不会有崩溃的风险?如果不是,哪些解决方案可能符合我的需求?
由于
答案 0 :(得分:0)
首先,如果你在DLL和使用它的应用程序中使用相同的include,如果两者都使用相同的编译器和兼容设置进行编译,并且两者都使用相同的运行时库(DLL one,而不是静态链接),你不应该担心的问题。
如果要隐藏DLL的详细信息并为DLL用户提供更改的简化标头,则需要自担风险。例如,如果有数据成员丢失(甚至是私有),如果缺少虚拟函数(甚至是私有函数),那么它可能会崩溃,或者更糟糕的是,在没有被注意的情况下破坏某些东西。所以我强烈建议你不要考虑这种方法,除非你对编译器生成的汇编器非常有经验。
如果您想隐藏课程的实施细节,最好的方法可能是围绕PIMPL idiom设计您的图书馆。