Part I: 编译用到的命令
// 工具=MinGW-W64
// Thread model: posix
// gcc version 8.1.0 (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project)
//Step1. GCC 编译(*.c)生成动态库(*.dll)
// -shared -o生成dll, -xc忽略其后所有文件后缀名(全当作.c源文件)
gcc -shared -o add.dll -xc add.cbin
//Step2. GCC 编译(main.c)+连接动态库(*.dll),生成可执行(*.exe)
gcc -o main.exe -xc main.cbin -xnone add.dll
// -o生成目标文件, -xnone停止忽略后缀名
gcc -o main.exe add.dll-xc main.cbin // 这两条作用相同,任选其一
//Step3. 运行目标文件
main.exe
//另外:若用正常后缀名(*.c),上述更精简
gcc -shared -o add.dll add.c
gcc -o main.exe main.c add.dll
main.exe
I
Part II: 编译用到的源文件
//--------------------------------------
//--- dll.h 内部函数声明
#ifndef _ADD_H
#define _ADD_H_
int add(int ,int );
#endif
//--------------------------------------
//--- dll.c 内部函数功能
#include "add.hbin"
int add(int x,int y)
{
return ( x + y);
}
//--------------------------------------
//--- main.c 调用dll函数
#include <stdio.h>
#include "add.hbin" //dll func declare
int main (int argc, char* argv []) {
int a=10,b=200;
int res = add (a, b); // DLL func
printf ("call add_dll :add(%d,%d)= %d\n", a,b,res);
return 0;
}
Part III: 编译运行
Part IV: GCC常用编译选项