C语言编写dll并调用

dll.h文件

 1 #ifndef _DLL_H_
 2 #define _DLL_H_
 3 
 4 #if BUILDING_DLL
 5 #define DLLIMPORT __declspec(dllexport)
 6 #else
 7 #define DLLIMPORT __declspec(dllimport)
 8 #endif
 9 
10 DLLIMPORT int add(int i,int j);
11 
12 #endif

dll.c文件

 1 /* Replace "dll.h" with the name of your header */
 2 #include "dll.h"
 3 #include <windows.h>
 4 
 5 DLLIMPORT int add(int i, int j)
 6 {
 7     return i+j;
 8 }
 9 
10 BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
11 {
12     switch(fdwReason)
13     {
14         case DLL_PROCESS_ATTACH:
15         {
16             break;
17         }
18         case DLL_PROCESS_DETACH:
19         {
20             break;
21         }
22         case DLL_THREAD_ATTACH:
23         {
24             break;
25         }
26         case DLL_THREAD_DETACH:
27         {
28             break;
29         }
30     }
31     
32     /* Return TRUE on success, FALSE on failure */
33     return TRUE;
34 }

exe.c文件(调用dll的)

 1 #include <windows.h>
 2 #include <stdio.h>
 3  
 4 typedef int (*Fun)(int,int);     //这里声明一个函数指针,typedef 关键字是必须的,好像要显示调用dll中的函数,都需要这样用函数指针给出声明
 5  
 6 int main()
 7 {
 8     HINSTANCE hDll;
 9     Fun Add;
10     hDll=LoadLibrary("myDll.dll");
11     if (hDll==NULL)
12     {
13         printf("%s","failed to load dll!\n");
14     }
15     else
16     {
17         printf("%s","succeeded in loading dll\n");
18         Add=(Fun)GetProcAddress(hDll,"add");
19         if (Add!=NULL)
20         {
21             int i,j;
22             printf("%s","input the first number:");
23             scanf("%d",&i);
24             printf("%s","input the first number:");
25             scanf("%d",&j);
26             printf("sum = %d\n",Add(i,j));
27         }
28     }
29     FreeLibrary(hDll);
30     
31     system("pause");
32     return 0;
33 }

 

转载于:https://www.cnblogs.com/cnrsgx/p/5946094.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值