typedef解决dll包装器

时间:2010-07-14 23:59:25

标签: c dll typedef wrapping arguments

我想为DLL文件编写一个包,在本例中是为python编写的。问题是参数类型不是C标准类型。他们已经被其他东西打字了。

我有DLL文件的头文件...所以我可以手动跟踪参数类型为typedef'ined的原始标准C类型。但想要一种更系统的方法来做到这一点。我想知道是否有一个实用程序可以评估头文件,或者你是否可以在dll中获取类型定义。

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找的工具是SWIG

  SWIG是一个软件开发工具,它将用C和C ++编写的程序与各种高级编程语言连接起来。 SWIG与不同类型的语言一起使用,包括常见的脚本语言,如Perl,PHP,Python,Tcl和Ruby。支持的语言列表还包括非脚本语言,如C#,Common Lisp(CLISP,Allegro CL,CFFI,UFFI),Java,Lua,Modula-3,OCAML,Octave和R.还有几种解释和编译的Scheme实现(支持Guile,MzScheme,Chicken)。 SWIG最常用于创建高级解释或编译的编程环境,用户界面,以及作为测试和原型化C / C ++软件的工具。 SWIG还可以以XML和Lisp s表达式的形式导出其解析树。 SWIG可以自由使用,分发和修改,用于商业和非商业用途。

这确实假设您愿意使用DLL的标头。如果您只想使用DLL,那么您还有更多工作要做。它可能会提供一个反射界面,您可以使用它来分析类型。如果做不到这一点,你将陷入痛苦的世界 - 或者对DLL中的任何调试信息进行逆向工程。