---
name: "h2xml"
section: "1"
platform: "linux"
package: "python-ctypeslib"
version: "0.0.0+svn20100125-4"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/ctypeslib"
---

# h2xml(1)

convert header files to XML intermediates xml2py - convert XML intermediates to Python ctypes interface

Part of [ctypeslib(1)](/ctypeslib/1.md).

## NAME

**h2xml** - convert header files to XML intermediates\
 **xml2py** - convert XML intermediates to Python ctypes interface

## SYNOPSIS

**h2xml** *includefile ... \[options\]* **-o** *outputxmlfile*\
 **xml2py** *xmlfile ... \[options\]* **-o** *outputpyfile*

## DESCRIPTION

**ctypeslib** is a Python code generator capable of converting C header files into xml files (using gccxml), and then converting the xmlfiles into Python modules which define a ctypes interface to the corresponding C library.

Ctypeslib is not ctypes.  Ctypes is included in Python 2.5+ and as an add-on for lower versions, while ctypeslib is a lesser known add-on written by the ctypes author.  If you use ctypes a lot and are tired of setting argtypes and restype of the called functions, you should look into ctypeslib.  Ctypeslib can also set up data types and structures from C header files automatically.

**h2xml** and **xml2py** are the user interface scripts to ctypeslib.  **h2xml** converts C header files into xml intermediates (using **gccxml**) and **xml2py** converts these intermediates to Python files.  At the minimum, you can get automatic construction of the C types (structures, etc) in ctypes definitions.  With extra options, macro definitions can be expanded and the output Python file can be automatically linked (using ctypes) to the corresponding C library.

The briefest example is:

**h2xml *header.h* -o *out\_c.xml***\
 **xml2py *out\_c.xml* -o *out\_c.py***

To obtain preprocessor symbols, you must use the **-c** flag to **h2xml.** To automatically link to C libraries via ctypes, you muss pass the relevant libraries to  **xml2py** with  **-l** *library.so.*

## OPTIONS

**h2xml** options:

- **-h**, **--help**

  show brief help message

**-q**, **--quiet**

- **-D** NAME\[=VALUE\]

  macros to define

- **-U** NAME

  macros to undefine

- **-I** DIRECTORY

  additional include directories

- **-o** XMLFILE

  XML output filename

- **-c**, **--cpp-symbols**

  try to find #define symbols - this may give compiler errors, so it's off by default.

- **-k**

  don't delete the temporary files created (useful for finding problems)

**xml2py** options:

- **-h**, **--help**

  show this help message and exit

- **-c**

  include source file location in comments

- **-d**

  include docstrings containing C prototype and source file location

- **-k** TYPEKIND

  kind of type descriptions to include: d = #defines, e = enumerations, f = functions, s = structures, t = typedefs

- **-l** DLLS

  libraries to search for exported functions

- **-o** OUTPUT

  output filename (if not specified, standard output will be used)

- **-r** EXPRESSION

  regular expression for symbols to include (if neither symbols nor expressions are specified,everything will be included)

- **-s** SYMBOL

  symbol to include (if neither symbols nor expressions are specified,everything will be included)

- **-v**

  verbose output

- **-w**

  add all standard windows dlls to the searched dlls list

- **-m** module

  Python module(s) containing symbols which will be imported instead of generated

- **--preload**=*DLL*

  dlls to be loaded before all others (to resolve symbols)

## EXAMPLES

Please see */usr/share/doc/python-ctypeslib/examples.Debian* for examples and explanation.

## SEE ALSO

*/usr/share/doc/python-ctypeslib/examples.Debian* contains a brief tutorial on some key features

Python docstrings (**pydoc ctypeslib**)

Ctypeslib upstream is *http://python.net/crew/theller/ctypes/* (see "Related Projects").

For ctypes information, see *http://docs.python.org/library/ctypes.html*

## AUTHOR

**ctypeslib** was written by Thomas Heller \<theller@ctypes.org\>.

This manual page was written by Richard Darst \<rkd@zgib.net\>, for the Debian project (and may be used by others).
