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语言萌新们快试试把。

Copyright © 2088 世界杯预选赛中国_1994年世界杯冠军是谁 - nywk120.com All Rights Reserved.
友情链接
Top