从 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中文网其他相关文章!