简单的写一个C调用DLL(动态链接库)的例子。
创建3个.c文件备用
test.c
1 #include <stdio.h> 2 3 //这里声明,表示来自dll文件。 4 extern int Add(int,int); 5 extern int Square(int); 6 extern int Power(int); 7 extern void PrintOddNum(); 8 extern void printEvenNum(); 9 10 //cl myDll.c /LD 编译myDll.c形成动态链接库文件 11 //cl test.c /link myDll.lib 链接dll文件的导入库生成可执行文件 12 //dumpbin myDll.dll /exports 查看dll库中的导出函数 13 14 int main() 15 { 16 int a=0; 17 int b=0; 18 int c=0; 19 scanf("%d %d", &a, &b); 20 21 c=Add(a, b); 22 23 printf("Hello World!\n"); 24 printf("a:%d + b:%d = c:%d\n", a, b, c); 25 26 if(0 == c%2) 27 { 28 printEvenNum(); 29 printf("c*c = %d\n", Square(c)); 30 } 31 else 32 { 33 PrintOddNum(); 34 printf("c*c*c = %d\n", Power(c)); 35 } 36 37 return 0; 38 }
myDll.c
1 #include <stdio.h> 2 3 //__declspec微软C关键字 dllexport 表示将函数导出,并生成lib文件 4 5 __declspec(dllexport) int Add(int a, int b) 6 { 7 return a+b; 8 } 9 10 __declspec(dllexport) void PrintOddNum() 11 { 12 printf("This is an odd number!\n"); 13 } 14 15 __declspec(dllexport) void printEvenNum() 16 { 17 printf("This is an even number!\n"); 18 }
mathDll.c
1 __declspec(dllexport) int Square(int a) 2 { 3 return a*a; 4 } 5 6 __declspec(dllexport) int Power(int a) 7 { 8 return a*a*a; 9 }
编译 *Dll.c文件生成*Dll.dll和*Dll.lib文件
eg:cl myDll.c /LD
cl mathDll.c /LD 继续编译mathDll.c文件
链接动态链接库的导出库(*.lib)文件,生成可执行程序。
eg:cl test.c /link *.lib
执行可执行程序test.exe
这个例子相当简单,C语言萌新们快试试把。