首页 > 后端开发 > C++ > 正文

如何从 DLL 动态加载 C 类:隐式链接与动态加载?

Mary-Kate Olsen
发布: 2024-10-25 17:29:02
原创
371 人浏览过

How to Dynamically Load C   Classes from a DLL: Implicit Linking vs. Dynamic Loading?

从 DLL 动态加载 C 类

从 DLL 导出整个 C 类可以动态加载其公共方法和属性.

与标头和库的编译时链接

对于编译时链接,请在类声明中使用标准 __declspec(dllexport) 指令。这会将类符号公开给编译器。创建包含类声明的头文件 (.h) 和包含符号定义的库文件 (.lib)。链接可执行文件时,请包含标头并链接到库。

运行时动态加载

可以使用 LoadLibrary() 和 GetProcAddress() 动态加载类。但是,由于后期绑定问题,这种方法通常不用于类。

工厂函数方法

加载 DLL 后动态链接到类,使用工厂函数,利用汇编器将新创建的对象连接到其适当的偏移量。此方法确保正确的类功能。请参阅提供的链接了解更多详细信息。

延迟加载 DLL

延迟加载 DLL 允许稍后加载 DLL。此选项涉及在 EXE 中定义一个 thunk 函数,以便在需要时动态加载 DLL。但是,它需要额外的配置,并且可能会带来性能损失。

与预处理器宏的隐式链接

隐式链接涉及引用 DLL 中的符号并依赖链接器来解析他们。如果 DLL 在应用程序启动时加载,则此方法适用。在头文件中使用预处理器宏(例如 _declspec(dllimport))会将导出的类符号公开给编译器。

建议

与预处理器宏的隐式链接通常是推荐用于 C 类的动态加载。它提供高效的符号解析以及与 Visual Studio 等常见开发工具的兼容性。

以上是如何从 DLL 动态加载 C 类:隐式链接与动态加载?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!