C++ 中的插件系统很困难,因为 ABI 没有正确定义,并且每个编译器(或其版本)都遵循自己的规则。然而,Windows 上的 COM 表明创建一个最小的插件系统是可能的,该系统允许具有不同编译器的程序员使用简单的接口为主机应用程序创建插件。
让我们实际一点,先把 C++ 标准放在一边,它在这方面没有多大帮助。如果我想为 Windows 和 Mac(以及可选的 Linux)编写一个支持 C++ 插件的应用程序,并且如果我想为插件作者提供相当大的编译器选择(例如不到 2 年的 Visual C++ 版本) 、GCC 或英特尔的 C++ 编译器),我可以依赖 C++ 的哪些功能?
当然,我假设插件是针对特定平台编写的。
在我的脑海中,以下是我能想到的一些 C++ 功能,以及我认为的答案:
- vtable布局,通过抽象类使用对象? (是的)
- 内置类型、指针? (是的)
- 结构体、联合体? (是的)
- 例外情况? (不)
- 外部“C”函数? (是的)
- 具有内置参数类型的 stdcall 非外部“C”函数? (是的)
- 具有用户定义参数类型的非 stdcall 非外部“C”函数? (不)
如果您能分享该领域的任何经验,我将不胜感激。如果您知道任何具有 C++ 插件系统的相当成功的应用程序,那也很酷。
Carl
多布博士的日记有一篇文章构建您自己的插件框架:第 1 部分 http://www.ddj.com/cpp/204202899?cid=RSSfeed_DDJ_Cpp这是关于这个主题的很好的读物。这是一系列文章的开始,该系列文章涵盖了 C/C++ 跨平台插件框架的体系结构、开发和部署。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)