之前在 Linux 下,编译一个 .c 文件的过程如下
而如果在 Windows 下,编译一个 .c 文件的过程是什么样子的呢?
在这里,首先揭秘一下,和 Linux 是一模一样的,除了动态库不一样外,其他的几乎是一样的。
对于动态库和静态库而言,Linux 和 Windows 对比如下
- 动态库文件:.dll = .so
- 静态库文件:.obj / .lib = .o / .a
之前学习过 Linux 制作动态库文件,现在在 Windows 平台下制作动态库文件 .dll
首先是文件目录,表示我们这次建立过程中使用到的文件
Calc
├── include
│ └── head.h
├── lib
├── main.c
└── src
├── myAdd.c
├── myDiv.c
├── myMul.c
└── mySub.c
文件说明
- include:函数接口文件 head.h 所在目录
- src:算法源码所在目录
- lib:生成的动态库文件所在目录
- main.c:主要文件
编译动态库 .dll 文件
gcc -shared *c -o myCal.dll -I ../include
# -shared *c : 编译 dll 需要用到的源码文件
# -o myCal.dll : 输出结果为 myCal.dll
# -I ../include:包含头文件所在的目录
使用编译好的头文件编译 main.c
gcc main.c myCal.dll -I ./include -o main
注意:要将 myCal.dll 文件和 main.c 放到同一文件夹下,从而保证程序能够找到动态库文件(所以,lib 文件夹是没什么用的了)。