我是在 C++ 中使用 DLL 的新手,我想知道如何成功地加载和使用 DLL 中包含的类而不会出现“损坏的堆栈”、“空指针”或任何应用程序崩溃 ^^强>。现在这让我有点困惑。 即使它可能更安全,我也不想使用接口(interface)类,因为它使用起来似乎太复杂了。我知道我应该在 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.
是否有可能只提供一个类的一个包含文件,只提供有用的方法而不会有崩溃的风险?如果否,哪些解决方案可能适合我的需求?
谢谢
最佳答案
首先,如果您在 DLL 和使用它的应用程序中使用相同的包含,如果两者都是使用相同的编译器和兼容设置编译的,并且都使用相同的运行时库(DLL 一个,不是静态链接),你应该没有你害怕的问题。
如果您想隐藏 DLL 的详细信息并向 DLL 用户提供经过更改的简化 header ,您需要自行承担风险。例如,如果缺少数据成员(甚至是私有(private)的)或者缺少虚函数(甚至是私有(private)的),那么它可能会崩溃,或者更糟的是,在不被注意的情况下破坏某些东西。所以我强烈建议您不要考虑这种方法,除非您对编译器生成的汇编程序非常有经验。
如果您想隐藏类的实现细节,最好的方法可能是围绕 PIMPL idiom 设计您的库。 .
关于c++ - 如何包含 DLL 的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31950563/