如何包含 类 个 DLL?

How to include classes of a DLL?

我是在 C++ 中使用 DLL 的新手,我想知道如何成功加载和使用 DLL 中包含的 classes 而无需获得 "corrupted stack"、"null pointer" 或任何应用程序崩溃 ^^。现在这让我有点困惑。 即使它可能更安全,我也不想使用 interface class 因为它看起来太复杂了。我知道我应该在 DLL 和应用程序中包含相同的内容以防止崩溃。这意味着我的包含文件应该提及成员姓名。

这是问题

I want to distribute my software (DLL + include file) and I don't want my customers to see the architecture of my project. But the only class I want to export from my DLL has as member, objects from other classes. So my class is dependent of other classes and so on in cascade.

是否可以只提供一个 class 的包含文件,只提供有用的方法而不会有崩溃的风险?如果否,哪些解决方案可能适合我的需求?

谢谢

首先,如果您在 DLL 和使用它的应用程序中使用相同的包含,如果两者是使用相同的编译器和兼容设置编译的,并且都使用相同的运行时库(DLL 一个,不是静态链接的), 你应该有 none 个你害怕的问题。

如果您想隐藏 DLL 的详细信息并向 DLL 用户提供经过更改、简化的 header,您需要自行承担风险。例如,如果缺少数据成员(甚至是私有的)或者缺少虚函数(甚至是私有的),那么它可能会崩溃,或者更糟的是,在不被注意的情况下破坏某些东西。所以我 强烈建议您不要考虑这种方法 除非您对编译器生成的汇编程序非常有经验。

如果您想隐藏 class 的实现细节,最好的方法可能是围绕 PIMPL idiom 设计您的库。