C/CPP在命令行中生成DLL文件
简单的写一个C调用DLL(动态链接库)的例子。
创建3个.c文件备用
test.c
1 #include
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
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语言萌新们快试试把。