C/CPP在命令行中生成DLL文件

发布时间 2023-03-24 16:26:17作者: Maiyat

简单的写一个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语言萌新们快试试把。