c人入门视频教程_c 入门
1、准备材料:漂发剂、一次性薄膜、小梳子、毛巾、小盒子、保鲜膜。
2、首先需要把一次性薄膜垫在头发下,避免漂发过程弄脏衣服。
3、接着我们把漂发剂倒在小盒子里,可以轻轻搅拌几下。
4、接下来我们用小梳子把漂发剂一点点梳到头发上。
5、弄好之后,我们用保鲜膜把头发包裹起来,等待20分钟左右。
6、20分钟后,我们把头发洗干净就可以了,可以看到头发颜色已经漂好了。
ctypes提供了三种调用动态库的对象:cdll、windll、oledll。
其中cdll主要用来加载C语言调用方式,windll主要用来加载WIN32调用方式,而oledll使用WIN32调用方式且返回值是Windows里返回的HRESULT值。
从而实现在python代码中调用C函数的功能。是不是很神奇。
ctypes内置函数,不需要安装
from ctypes import * # 导入
CDLL('/usr/local/lib/libusb-1.0.so', mode=ctypes.RTLD_GLOBAL) # 加载。
so动态库,mode=ctypes.RTLD_GLOBAL实现如果调用的动态库有其它依赖库时,提前加载的功能
libc = cdll.LoadLibrary('/opt/bin/lib/libqkey.so') # 例如,libqkey.so依赖了上述libusb-1.0.so库,就需要加载libusb-1.0.so库为全局加载
DeviceId = [0x00] * 8
DeviceId = (c_ubyte * 8)(*DeviceId) # 这个是之前比较傻的做法,因为要先给这个变量分配一段地址,其实这里用
libc.GenStartInfo(byref(DeviceId)) # 调用C语言接口函数 GenStartInfo
deviceId = ctypes.c_void_p()
DeviceId = ctypes.pointer(deviceId)
libc.GenStartInfo(DeviceId) # 使用指针即可
byref(n)返回的相当于C的指针右值&n,本身没有被分配空间
pointer返回的相当于指针左值T* p=&n,可以改变,可以取地址
这样就完成了最基本的调用C接口函数的功能
有时候希望打印出来,但如果返回值不对的时候,打印总是出错,于是写了一个打印函数