我正在为应用程序开发一个插件系统。我们的想法是从插件中加载一些函数(作为DLL加载),并在app中托管的脚本语言中使用这些函数。我必须公开DLL的API,以便它们与应用程序进行交互。 API可能会超时更改,旧的DLL不应失效。请给我一些线索阅读或请提出建议。感谢。
Duminda
答案 0 :(得分:1)
将API暴露给插件的简单解决方案是让另一个“核心” - 库暴露API并将插件链接到它。这对插件开发者来说非常自然。
关于API更改:不得更改公共API,但只能扩展,例如添加到。没有破坏客户端就无法更改API。
这是一个关于不断变化的API的链接,而不会破坏客户端。它是Java,但大多数也适用于C ++。 http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs
请务必以二进制兼容方式更改API。在这方面C比C ++更容易,所以考虑使用C作为公共API。在C ++中,PIMPL-Idiom有帮助,但仍然无法添加新的虚拟方法。
答案 1 :(得分:1)
“行业标准”方式是利用SWIG(简化包装和接口生成器)来获取您的C / C ++代码并创建“高级”包装类,以便您的脚本语言可以访问您的C / C ++代码非常容易。
对于商业广告,SWIG也是免费的。
SWIG最常用于创建 高级解释或编译 编程环境,用户 接口,以及作为测试工具 和原型化C / C ++软件。痛饮 通常用于解析C / C ++ 接口并生成'胶水 上述目标所需的代码 要调用C / C ++代码的语言。
答案 2 :(得分:0)
以下是一些想法:
extern "C"
。答案 3 :(得分:0)
COM非常适合您的需求。
它与语言无关,并且dll可以在运行时由应用程序加载。
为您的组件实现ActiveX也可以为脚本编写代码。
http://msdn.microsoft.com/en-us/library/ee663262(v=VS.85).aspx