VS2015 创建dll,以及动态调用

@[TOC](VS2015 创建dll,以及动态调用)
# [参考链接](https://www.jianshu.com/p/b3def08195ff)
# 创建步骤,请参考链接
## 创建 .C文件
```
#include
#include "dm01.h" 
__declspec(dllexport) int add(int a,int b)
{
 return (a + b);
}

```
## 创建.h 文件

	```
	#pragma once
__declspec(dllexport)
int add(int a,int b);

```
## 快捷键F7 编译完成,在Debug\文件下找到自己的dll

# 动态调用
网上很多静态调用的博客,因为VS2015不熟,配置很多次,总会遇到各种问题,最终选择了动态调用,什么都不需要配置,只需要把.dll文件和你的cpp文件放在一个目录下就可以了
```c

#include "stdafx.h"
#include 

int main()
{

#include "stdafx.h"
#include 

int main()
{
	
	/*  这段代码调用简单的 add.dll 亲测可行*/
	
	HINSTANCE handle = LoadLibrary(_T("add.dll"));//LoadLibrary填入ddl文件名赋值给句柄,你不懂句柄就拉倒了,这个不重要。
	printf("dll的句柄返回值%d\n",handle); //打印dll的句柄地址值
	if (handle) //判读句柄内dll是否可用
	{
		typedef int(*DLL_FUNCTION_ADD) (int, int); //typedef定义一下函数指针,你不懂的话就记住末尾两个是你需要函数的形参。
		DLL_FUNCTION_ADD dll_add = (DLL_FUNCTION_ADD)GetProcAddress(handle, "add"); //使用GetProcAddress得到函数,参数是句柄名和函数名
		printf("dll_函数返回值%d\n",dll_add); //打印dll的函数地址值
		if (dll_add) //还是判断一下函数指针是否有效
		{
			int result = dll_add(10, 11); //终于可以用add了
			printf("dll_add返回值:%d\n", result); //打印吧
		}
		FreeLibrary(handle); //卸载句柄,,
	}
	return 0;
	}


```
## ctrl + F5 不需要调试的执行,如果只点击F5可能遇到 The programhas exited with code 0 (0x0).的问题

```
//运行结果
dll的句柄返回值268435456
dll_函数返回值268450765
dll_add返回值:21
Press any key to continue . . .

```

 

你可能感兴趣的:(c/c++)