C语言里面的动态库和静态库

Python020

C语言里面的动态库和静态库,第1张

之所以成为【静态库】,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。

试想一下,静态库与汇编生成的目标文件一起链接为可执行文件,那么静态库必定跟.o文件格式相似。其实一个静态库可以简单看成是一组目标文件(.o/.obj文件)的集合,即很多目标文件经过压缩打包后形成的一个文件。静态库特点总结:

为什么需要动态库,其实也是静态库的特点导致。

动态库特点总结:

生成动态库

一般C语言写的程序可以让其他语言进行调用,比如python, java,等等

c语言有两种库类型,静态库和动态库(共享库)

命令:ar rcs libmulib.a file1.o

1、将DLL文件复制到编译路径目录(系统目录或项目目录等等);

2、导出DLL的功能接口;如:[DllImport("WDT_DIO64.dll")]

internal static extern int InitDIO()

这个DLL在C中的头文件是这样表达的:BOOL InitDIO(void)

BOOL 在C中是int类型的,对应的C#也是int 类型,调用DLL通常都是静态的外部引进的(static extern),internal 是可见属性定义(自己根据需要定义);

3、参考DLL对应的头文件的信息。如果C/C++封装的dll是打算通用的,通常发布头文件,头文件在C中是编译器所需的文件,DLL的关键信息都在头文件展示出来。我们可以通过阅读头文件的包含信息(如结构体、宏定义,函数原型、功能注释等),使用C#方式来导出DLL的函数接口来调用DLL(如上2、)。

4、在需要的地方加上参数调用导出的函数接口。