c语言创建dll,c语言调用dll

一 c语言创建dll

开发工具:vs2012

0. 新建项目->win32控制台程序->选择dll、空项目->完成。

1. 创建头文件cdll.h

#ifndef _DLLMAIN_H  
#define _DLLMAIN_H  
#ifndef        DLL_EXPORT  
#define _LIBAPI __declspec(dllexport)  
#else  
#define _LIBAPI __declspec(dllimport)  
#endif  
#ifdef __cplusplus
extern "C" {
#endif
_LIBAPI void getWebToken(const char* a, const char* b, char* webtoken);
#ifdef __cplusplus
}
#endif
#endif /* _DLL_H_ */
2. 创建源文件cdll.c

#include "cdll.h"
#include "windows.h"

void getWebToken(const char* a, const char* b, char* webtoken)
{
                int ret = 1;
	        if(ret)
	{
		strcpy(webtoken, "123456789");
	}else
	{
		strcpy(webtoken, a);
	}
	return;
}



3. 右击项目并生成,成功可在Debug目录下找到dll文件。

二 C语言调用dll

0. 新建项目->win32控制台程序->选择控制台应用程序、空项目->完成。

1. 创建文件main.c

#include 
#include 
typedef void (*pMsg)(const char* a, const char* b, char* webtoken);//函数原型指针

int main()
{
   HMODULE hdll=LoadLibraryA("cdll.dll");  //加载dll
   if(hdll!=NULL)
   {
     pMsg proc=(pMsg)GetProcAddress(hdll,"getWebToken");
	 if(proc!=NULL)
	 {
		 //proc();
		char strwebtoken[128] = "";
		proc("123456781111", "87654321", strwebtoken);
                printf("result=%s", strwebtoken);
	 }
   }
   FreeLibrary(hdll);
   return 0;
}


注意点:

    a. 首先要定义指向和DLL中相同的函数原型指针。

    b. 根据编码规则选择LoadLibraryA,而不是LoadLibrary。


2. 将cdll.dll复制到main.c的Debug目录下,运行程序。


你可能感兴趣的:(c)