之前在 Linux 下,编译一个 .c 文件的过程如下

    § gcc制作动态库 (Windows) - 图1

    而如果在 Windows 下,编译一个 .c 文件的过程是什么样子的呢?

    在这里,首先揭秘一下,和 Linux 是一模一样的,除了动态库不一样外,其他的几乎是一样的。

    对于动态库和静态库而言,Linux 和 Windows 对比如下

    • 动态库文件:.dll = .so
    • 静态库文件:.obj / .lib = .o / .a

    之前学习过 Linux 制作动态库文件,现在在 Windows 平台下制作动态库文件 .dll

    § gcc制作动态库 (Windows) - 图2 首先是文件目录,表示我们这次建立过程中使用到的文件

    1. Calc
    2. ├── include
    3. └── head.h
    4. ├── lib
    5. ├── main.c
    6. └── src
    7. ├── myAdd.c
    8. ├── myDiv.c
    9. ├── myMul.c
    10. └── mySub.c

    文件说明

    • include:函数接口文件 head.h 所在目录
    • src:算法源码所在目录
    • lib:生成的动态库文件所在目录
    • main.c:主要文件

    § gcc制作动态库 (Windows) - 图3 编译动态库 .dll 文件

    1. gcc -shared *c -o myCal.dll -I ../include
    2. # -shared *c : 编译 dll 需要用到的源码文件
    3. # -o myCal.dll : 输出结果为 myCal.dll
    4. # -I ../include:包含头文件所在的目录

    § gcc制作动态库 (Windows) - 图4 使用编译好的头文件编译 main.c

    1. gcc main.c myCal.dll -I ./include -o main

    注意:要将 myCal.dll 文件和 main.c 放到同一文件夹下,从而保证程序能够找到动态库文件(所以,lib 文件夹是没什么用的了)。