CINXE.COM
CFFI documentation — CFFI 1.17.1 documentation
<!DOCTYPE html> <html lang="en" data-content_root="./"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <title>CFFI documentation — CFFI 1.17.1 documentation</title> <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" /> <link rel="stylesheet" type="text/css" href="_static/basic.css?v=c058f7c8" /> <link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=27fed22d" /> <script src="_static/documentation_options.js?v=3707c40e"></script> <script src="_static/doctools.js?v=9a2dae69"></script> <script src="_static/sphinx_highlight.js?v=dc90522c"></script> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> <link rel="next" title="Goals" href="goals.html" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" /> <!-- RTD Extra Head --> <script type="application/json" id="READTHEDOCS_DATA">{"ad_free": false, "api_host": "https://readthedocs.org", "builder": "sphinx", "canonical_url": null, "docroot": "/doc/source/", "features": {"docsearch_disabled": false}, "global_analytics_code": "UA-17997319-1", "language": "en", "page": "index", "programming_language": "py", "project": "cffi", "proxied_api_host": "/_", "source_suffix": ".rst", "subprojects": {}, "theme": "alabaster", "user_analytics_code": "", "version": "stable"}</script> <!-- Using this variable directly instead of using `JSON.parse` is deprecated. The READTHEDOCS_DATA global variable will be removed in the future. --> <script type="text/javascript"> READTHEDOCS_DATA = JSON.parse(document.getElementById('READTHEDOCS_DATA').innerHTML); </script> <!-- end RTD <extrahead> --> <script async type="text/javascript" src="/_/static/javascript/readthedocs-addons.js"></script><meta name="readthedocs-project-slug" content="cffi" /><meta name="readthedocs-version-slug" content="stable" /><meta name="readthedocs-resolver-filename" content="/" /><meta name="readthedocs-http-status" content="200" /></head><body> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <section id="cffi-documentation"> <h1>CFFI documentation<a class="headerlink" href="#cffi-documentation" title="Link to this heading">¶</a></h1> <p>C Foreign Function Interface for Python. Interact with almost any C code from Python, based on C-like declarations that you can often copy-paste from header files or documentation.</p> <div class="toctree-wrapper compound"> <ul> <li class="toctree-l1"><a class="reference internal" href="goals.html">Goals</a></li> <li class="toctree-l1"><a class="reference internal" href="goals.html#comments-and-bugs">Comments and bugs</a></li> <li class="toctree-l1"><a class="reference internal" href="whatsnew.html">What’s New</a><ul> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-17-1">v1.17.1</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-17-0">v1.17.0</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-16-0">v1.16.0</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-15-1">v1.15.1</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-15-0">v1.15.0</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-14-6">v1.14.6</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-14-5">v1.14.5</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-14-4">v1.14.4</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-14-3">v1.14.3</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-14-2">v1.14.2</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-14-1">v1.14.1</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-14">v1.14</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-13-2">v1.13.2</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-13-1">v1.13.1</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#v1-13">v1.13</a></li> <li class="toctree-l2"><a class="reference internal" href="whatsnew.html#older-versions">Older Versions</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation and Status</a><ul> <li class="toctree-l2"><a class="reference internal" href="installation.html#platform-specific-instructions">Platform-specific instructions</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a><ul> <li class="toctree-l2"><a class="reference internal" href="overview.html#main-mode-of-usage">Main mode of usage</a></li> <li class="toctree-l2"><a class="reference internal" href="overview.html#other-cffi-modes">Other CFFI modes</a></li> <li class="toctree-l2"><a class="reference internal" href="overview.html#embedding">Embedding</a></li> <li class="toctree-l2"><a class="reference internal" href="overview.html#what-actually-happened">What actually happened?</a></li> <li class="toctree-l2"><a class="reference internal" href="overview.html#abi-versus-api">ABI versus API</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="using.html">Using the ffi/lib objects</a><ul> <li class="toctree-l2"><a class="reference internal" href="using.html#working-with-pointers-structures-and-arrays">Working with pointers, structures and arrays</a></li> <li class="toctree-l2"><a class="reference internal" href="using.html#python-3-support">Python 3 support</a></li> <li class="toctree-l2"><a class="reference internal" href="using.html#an-example-of-calling-a-main-like-thing">An example of calling a main-like thing</a></li> <li class="toctree-l2"><a class="reference internal" href="using.html#function-calls">Function calls</a></li> <li class="toctree-l2"><a class="reference internal" href="using.html#variadic-function-calls">Variadic function calls</a></li> <li class="toctree-l2"><a class="reference internal" href="using.html#memory-pressure-pypy">Memory pressure (PyPy)</a></li> <li class="toctree-l2"><a class="reference internal" href="using.html#extern-python-new-style-callbacks">Extern “Python” (new-style callbacks)</a></li> <li class="toctree-l2"><a class="reference internal" href="using.html#callbacks-old-style">Callbacks (old style)</a></li> <li class="toctree-l2"><a class="reference internal" href="using.html#windows-calling-conventions">Windows: calling conventions</a></li> <li class="toctree-l2"><a class="reference internal" href="using.html#ffi-interface">FFI Interface</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="ref.html">CFFI Reference</a><ul> <li class="toctree-l2"><a class="reference internal" href="ref.html#ffi-interface">FFI Interface</a></li> <li class="toctree-l2"><a class="reference internal" href="ref.html#conversions">Conversions</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="cdef.html">Preparing and Distributing modules</a><ul> <li class="toctree-l2"><a class="reference internal" href="cdef.html#ffi-ffibuilder-cdef-declaring-types-and-functions">ffi/ffibuilder.cdef(): declaring types and functions</a></li> <li class="toctree-l2"><a class="reference internal" href="cdef.html#ffi-dlopen-loading-libraries-in-abi-mode">ffi.dlopen(): loading libraries in ABI mode</a></li> <li class="toctree-l2"><a class="reference internal" href="cdef.html#ffibuilder-set-source-preparing-out-of-line-modules">ffibuilder.set_source(): preparing out-of-line modules</a></li> <li class="toctree-l2"><a class="reference internal" href="cdef.html#letting-the-c-compiler-fill-the-gaps">Letting the C compiler fill the gaps</a></li> <li class="toctree-l2"><a class="reference internal" href="cdef.html#ffibuilder-compile-etc-compiling-out-of-line-modules">ffibuilder.compile() etc.: compiling out-of-line modules</a></li> <li class="toctree-l2"><a class="reference internal" href="cdef.html#ffi-ffibuilder-include-combining-multiple-cffi-interfaces">ffi/ffibuilder.include(): combining multiple CFFI interfaces</a></li> <li class="toctree-l2"><a class="reference internal" href="cdef.html#ffi-cdef-limitations">ffi.cdef() limitations</a></li> <li class="toctree-l2"><a class="reference internal" href="cdef.html#debugging-dlopen-ed-c-libraries">Debugging dlopen’ed C libraries</a></li> <li class="toctree-l2"><a class="reference internal" href="cdef.html#ffi-verify-in-line-api-mode">ffi.verify(): in-line API-mode</a></li> <li class="toctree-l2"><a class="reference internal" href="cdef.html#upgrading-from-cffi-0-9-to-cffi-1-0">Upgrading from CFFI 0.9 to CFFI 1.0</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="embedding.html">Using CFFI for embedding</a><ul> <li class="toctree-l2"><a class="reference internal" href="embedding.html#usage">Usage</a></li> <li class="toctree-l2"><a class="reference internal" href="embedding.html#more-reading">More reading</a></li> <li class="toctree-l2"><a class="reference internal" href="embedding.html#troubleshooting">Troubleshooting</a></li> <li class="toctree-l2"><a class="reference internal" href="embedding.html#issues-about-using-the-so">Issues about using the .so</a></li> <li class="toctree-l2"><a class="reference internal" href="embedding.html#using-multiple-cffi-made-dlls">Using multiple CFFI-made DLLs</a></li> <li class="toctree-l2"><a class="reference internal" href="embedding.html#multithreading">Multithreading</a></li> <li class="toctree-l2"><a class="reference internal" href="embedding.html#testing">Testing</a></li> <li class="toctree-l2"><a class="reference internal" href="embedding.html#embedding-and-extending">Embedding and Extending</a></li> </ul> </li> </ul> </div> </section> </div> </div> </div> <div class="sphinxsidebar" role="navigation" aria-label="Main"> <div class="sphinxsidebarwrapper"> <h1 class="logo"><a href="#">CFFI</a></h1> <search id="searchbox" style="display: none" role="search"> <div class="searchformwrapper"> <form class="search" action="search.html" method="get"> <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" placeholder="Search"/> <input type="submit" value="Go" /> </form> </div> </search> <script>document.getElementById('searchbox').style.display = "block"</script><h3>Navigation</h3> <ul> <li class="toctree-l1"><a class="reference internal" href="goals.html">Goals</a></li> <li class="toctree-l1"><a class="reference internal" href="goals.html#comments-and-bugs">Comments and bugs</a></li> <li class="toctree-l1"><a class="reference internal" href="whatsnew.html">What’s New</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation and Status</a></li> <li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a></li> <li class="toctree-l1"><a class="reference internal" href="using.html">Using the ffi/lib objects</a></li> <li class="toctree-l1"><a class="reference internal" href="ref.html">CFFI Reference</a></li> <li class="toctree-l1"><a class="reference internal" href="cdef.html">Preparing and Distributing modules</a></li> <li class="toctree-l1"><a class="reference internal" href="embedding.html">Using CFFI for embedding</a></li> </ul> <div class="relations"> <h3>Related Topics</h3> <ul> <li><a href="#">Documentation overview</a><ul> <li>Next: <a href="goals.html" title="next chapter">Goals</a></li> </ul></li> </ul> </div> </div> </div> <div class="clearer"></div> </div> <div class="footer"> ©2012-2018, Armin Rigo, Maciej Fijalkowski. | Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.0.2</a> & <a href="https://alabaster.readthedocs.io">Alabaster 1.0.0</a> | <a href="_sources/index.rst.txt" rel="nofollow">Page source</a> </div> </body> </html>