ctypeslib2-ffi工具包,依赖于clang

ctypeslib2的Python项目详细描述


#带libclang的cTypesLib

[![构建状态](https://travis-ci.org/trolldbois/cTypesLib.svg?branch=master)(https://travis ci.org/trolldbois/cTypesLib)
[![覆盖状态](https://covertalls.io/repos/trolldbois/cTypesLib/badge.svg)(https://covertalls.io/r/trolldbois/cTypesLib)
[![代码运行状况](https://landscape.io/github/trolldbois/cTypesLib/master/landscape.svg?style=flat)(https://landscape.io/github/trolldbois/cTypesLib/master)
[![最新版本](https://img.shields.io/github/tag/trolldbois/ctypeslib.svg)](
[![支持的版本](https://img.shields.io/pypi/pyversions/cTypesLib2.svg)](

[快速使用指南](docs/cTypesLib_2.0_Introduction.ipynb)在文档/文件夹中。


-2017-05-01:master branch与libclang-4.0 head一起工作在ubuntu上,libclang库是用版本安装的。(`\uu init_uuu.py`)
但是如果遇到版本兼容性问题,则可能需要使用以下解决方案之一来解决该问题:

1。安装libclang-5.0-dev以获取libclang.so(可能)
2。或者创建一个链接到libclang-5.0.so.1,名为libclang.so
3。或者硬编码一个调用clang.cindex.config.load_libra库库文件('libclang-5.0.so.1.0.0.so.1')的调用,在您的代码









>通过pypi可以通过pypi获得稳定的发行版,网址为:http://pypi.pypi.org/pypi/ctyppeslisb2/





.7依赖关系ndency

请参阅http://apt.llvm.org/上的llvm clang说明,或使用发行版的软件包。

ng b:4;
>无符号长c:3;
>无符号长d:3;
>长f:2;


````
>运行c-to-python脚本:
`clang2py t.c `
>输出:
```````
``` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `br/>指针大小为:8
长双精度指针大小为:16









class struct我的位字段(ctypes.structure)类结构的位字段(ctypes.structure)类结构的位字段(ctypes.structure):
u pack=true;source:false
u字段=[
('a',ctypes.c_int64,c_int64,3),
('b',ctypes.c_int64,4),
('br/>('b',ctypes.c_int64,4),
('c','c',ctypes.c,ctypes.c_int64,3),
('f',cTypes.c\u英寸T64,2),
('padding_0',cTypes.c_int64,49),
]







['struct_my_bitfield']
```















>typedef结构{
bool bar1;bool bar3;
}foo;
```


>运行c-to-python脚本(包含任何相关的包含文件夹):
`clang2py--clang args=-i/usr/include/clang/4.0/include"test stdbool.c`

输出:
````
>`````
=-code:utf-8-*-

;目标架构是:['-i/usr/include/4.0/include']
word的大小是:8
指针的大小是:8
longduble的大小是:16

>导入ctype


('bar2',cTypes.c\u bool),
"







foo=struct\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\l dll]
[-m模块][-o输出][-p dll[-q][-r表达式]
[-s符号][-t目标][-v][-v][-w][-x]
[--显示ids showids][--max depth n][--clang args clang args clang args]
文件[文件…]


2.1.5rc0版。生成python代码from c headers

位置参数:
文件源文件名。不支持stdin

可选参数:
-h,--help显示此帮助消息并退出
-c,--comments包括源doxygen样式的注释
-d,--doc包括包含c prototype和源
file locatio的docstringsn
--要调试的调试设置级别
-e,--显示定义位置
在注释中包括源文件位置
-k type kind,--kind typekind
要包括的类型描述类型:a=别名,c=
class,d=变量,e=枚举,f=函数,m
=宏,定义s=结构,t=typedef,u=union
默认值='cdefstu'
-i,--包含在源文件外部定义的include声明
-l dll,--包含库用于搜索导出函数的dll
库。如果需要,添加多个

-m模块,--module模块
python模块,其中包含将被导入而不是生成的符号
-o输出,--output输出
output fil名称(如果未指定,将使用标准输出

-p dll,--预加载dll
dll,在所有其他dll之前加载(解析
符号)
-q,--安静关闭警告和
-r表达式,--regex表达式
要包含的符号的正则表达式(如果未指定
符号或表达式,则将包含所有内容)
-s符号,--symbol符号
symbol to include(如果未指定符号或表达式
,则将包含所有内容)
-t target,--target target
target architecture(默认:x86_64-linux)
-v,--verbose verbose output
-v,--version show progrAM的版本号和exit
-w将所有标准Windows DLL添加到搜索的DLL
list
-x,-exclude includes
仅分析源文件中的对象。忽略includes
--show ids showids不计算光标id(非常慢)
--max depth n将光标扩展限制为深度n
--clang args clang args
clang选项,用引号括起来:-clang args="-std=c99
-wall"

-建筑:你可以将目标修改器传递给clang。例如,尝试
--clang args="-target x86_64"或"-target i386 linux"更改目标CPU
架构。
`````

clang.
-clang2py.py调用cTypesLib/cTypesLib/codeGen/codeGenerator.py
-codeGenerator.py调用cTypesLib/cTypesLib/codeGen/clangParser.py
-clangParser.py使用libclang的python绑定访问c源代码的clang内部表示。
然后将ast树的每个子级转换为
typedesc.
-codegenerator.py中列出的python对象,然后使用这些python对象生成基于cTypes的python源代码。

如果需要的话,应该能够生成跨平台的内存表示。




slib包含以下包:
-``cTypesLib.codeGen`-代码生成器
-``cTypesLib.contrib`-各种贡献模块
-``cTypesLib.util`-各种小助手函数
-``cTypesLib.test`-单元测试

为clang做了大量修补。
-https://github.com/trolldbois/cTypesLib基于原始cTypesLib的
rev77594。
-git svn id:http://svn.python.org/projects/cTypes/trunk/cTypesLib@77594
6015fed2-1504-0410-9fe1-9d1591cc4771

-author="thomas heller",
-author_email="theller@ctypes.org",

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
为什么sonar认为这个表达式总是错误的   java为什么PrintWriter不能工作?   java将数组从php发送到安卓 studio   java在静态方法中调用非静态方法   java何时使用Swingutiles。invokeAndWait/invokeLater   java jdbc:embeddeddatabase引发HsqlException   java度量Hyperledger结构项目的性能   java将字符串转换为Blob   java如何将文本添加到文本区域而不是替换它   java如何对100GB的字符串进行排序   发生异常错误::java。lang.OutOfMemoryError:Java堆空间   安卓 studio java。lang.NoClassDefFoundError:org。slf4j。帮手。消息格式化程序   当从命令promt运行时,java maven不是运行主类   用于翻转其余端点的功能的java注释   Oracle函数中的java默认值   java如何访问maven。建筑Quarkus中用于资源筛选的时间戳   java如何在一个JText区域中显示大量值JTable选定行   如何在java中用约束注释web服务参数?   java为了获得流信息,我们应该向userFriendlySelector函数传递哪些参数   java Google GSON嵌套哈希映射反序列化