C语言编写dll并调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于C语言编写dll并调用的主要内容,如果未能解决你的问题,请参考以下文章

如果没有可用的 c++ 编译器,C 语言可以调用用 c++ 编写的 DLL 吗?

jna调用c编写的dll

c/c++编写dll供其他语言调用

c#调用C、C++编写的dll

JAVA如何调用C语言编写的程序,并且传参数,读取返回结果?

如何用c/c++编写和调用dll动态链接库。