jak*_*gut 6 c++ plugins portability shared-libraries dynamic-loading
我正在开发一个具有多个类似代码路径的项目,我想将它从主项目分离到插件中.该项目必须保持跨平台兼容,我所研究的所有动态库加载API都是特定于平台的.
创建动态库加载系统的最简单方法是什么,可以在多个操作系统上编译和运行而无需额外修改代码?理想情况下,我想编写一个插件,并使其适用于项目支持的所有操作系统.
谢谢.
您必须使用平台相关代码来加载系统.在Windows上加载DLL 与在Unix中加载共享对象不同.但是,有几个#ifdef你将能够在加载器中拥有大致相同的代码库.
话虽如此,我认为你可以让你的插件平台独立.当然,您必须为每个平台编译它,但代码将是99%相同.
加载Windows和Unix/Linux的动态库使用3个函数.一对加载/卸载库的函数,另一个函数用于获取库中函数的地址.您可以轻松地围绕这三个函数编写包装,以提供跨操作系统支持.