区分:动态链接库DLL与静态链接库Lib
动态链接库(Dynamic Link Library,DLL)
是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。
Windows下动态链接库的扩展名是dll,Linux下是so,Mac OS X下是dylib
它和可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。
如果一个应用程序使用了动态链接库,Win32系统保证内存中只有DLL的一份复制品,这是通过内存映射文件实现的。DLL首先被调入Win32系统的全局堆栈,然后映射到调用这个DLL的进程地址空间。在Win32系统中,每个进程拥有自己的32位线性地址空间,如果一个DLL被多个进程调用,每个进程都会收到该DLL的一份映像。
静态链接库(static link library,Lib)
是在编译的链接期间使用的,他里面其实就是源文件的函数实现。
Lib库有两种,一种就是常见的普通Lib(static Lib),还有一种大家经常下载的开源代码编译后,会产生Lib和dll,其中Lib只是Dll的附带品,是DLL导出的函数列表文件而已,暂且称之为Dynamic Lib。
两者都是二进制文件,两者都是在链接是调用的,使用static lib的exe可直接运行,使用dynamic lib的exe需要对应的dll才能运行。
python调用C库
http://blog.csdn.net/taiyang1987912/article/details/44779719
不经过任何封装打包成so,再使用python的ctypes调用即可。
(1)C语言文件:pycall.c