【问题标题】:write C plugin using some script language使用一些脚本语言编写 C 插件
【发布时间】:2010-11-24 09:29:47
【问题描述】:

我有将自定义 C dll 作为插件加载的 API。

我想要的是创建一些代理 dll,它将:

  • 从应用程序核心转移调用 到一些脚本。
  • 从该脚本传输回调 返回应用程序核心。

API 相当复杂,因此手动包装所有内容会很费力 - 有什么可以自动完成的吗? (任何脚本语言都可以使用,例如 lua、tcl、perl)。

基本上我需要类似 tolua 的东西,但它只允许调用回调。生成 lua-stub 更有趣,它将从核心应用程序自动调用(通过代理插件?)。 (并且这些存根应该基于插件 C API 生成)。

有人知道可以使用哪种工具吗?

【问题讨论】:

    标签: c plugins proxy


    【解决方案1】:

    执行此操作的“标准”方法是用某种接口定义语言编写互操作函数,并为该语言编写解析器以输出 C/lua/etc。你想要的代码(例如http://msdn.microsoft.com/en-us/library/aa367091%28v=vs.85%29.aspx)。你听说过swig吗? (http://www.swig.org/),这可能会有所帮助。

    我们内部使用的方法是跳过 IDL 步骤,直接用我们想要导出的东西标记我们的 C 代码。例如 AUTO_PARSE JSON_RPC; void foo(char *name, int age) { //... }

    在预处理步骤中,我们扫描源文件中的 AUTO_PARSE 标记并输出特殊的 .c 文件,我们将这些文件与信息一起编译,例如 json rpc。

    希望这会有所帮助! 亚伦

    【讨论】:

    • 是的,这正是我想要的。但是我应该编写自己的解析器和 IDL 编译器吗?我希望听到一些可以为我完成这项工作的工具,但看起来还没有完全准备好供公众使用的喷气式飞机。
    • 我们现在已经开源了 HPHP,如果你想复制它,它有一个非常简单的插件架构,请查看 /src/idl
    猜你喜欢
    • 2022-10-26
    • 2011-01-11
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    相关资源
    最近更新 更多