DLL动态链接库的创建及调用流程(VS2015)

DLL动态链接库的创建及调用流程(VS2015)




1、创建动态链接库(DLL)demo流程

(1)新建项目

在这里插入图片描述

(2)确定项目框架和名称

在这里插入图片描述

(3)应用程序导向,下一步
在这里插入图片描述

(4)设置应用程序类型(DLL类型,空项目),完成项目建设
在这里插入图片描述

(5)在项目中添加头文件和源文件

在这里插入图片描述

(6)头文件定义导出函数信息
在这里插入图片描述

(7)源文件为导出接口函数的实现
在这里插入图片描述

(8)编译生成DLL文件
在这里插入图片描述

(9)生成的DLL文件所在位置
在这里插入图片描述

2、创建调用实例流程

注:为了开发调试方便,创建的调用DLL接口的C++项目与DLL项目同目录
(1)新建项目
在这里插入图片描述

(2)确定控制台类型和项目名称
在这里插入图片描述

(3)应用程序向导,下一步
在这里插入图片描述

(4)设置应用程序类型,控制台应用程序,空项目
在这里插入图片描述

(5)完成时同目录将多出一个C++项目,在项目中添加一个源文件
在这里插入图片描述

(6)在源文件中添加DLL对应函数接口的相关调用信息实现调用,具体如图
在这里插入图片描述

注:调用函数时,项目应设置为启动项,否则会出现一下问题
在这里插入图片描述

(7)附文件代码:
1)DLL项目中的文件:
test.h文件

#ifndef DLLEXPORT_EXPORTS
#define DLLEXPORT_API __declspec(dllexport)
#else
#define DLLEXPORT_API __declspec(dllimport)
#endif

#include<iostream>
#include<fstream>
#include<Windows.h>

//函数定义导出接口函数
EXTERN_C DLLEXPORT_API int add(int x, int y);

test.cpp文件

#include "test.h"

int add(int x, int y)
{
	return  x+y;
}

2)调用DLL的C++项目文件

main_test.cpp文件

#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;

//声明定义动态链接库(dll)对应函数的别名
typedef int(*fadd)(int x, int y);

int main() {
	//导入动态链接库,根据dll所在位置进行导入
	HINSTANCE hInst;
	hInst = LoadLibrary(L"test.dll");
	if (hInst == NULL) {
		return -1;
	}
	//检索动态链接库(dll)中的函数接口
	fadd pfadd = (fadd)GetProcAddress(hInst, "add");
	if (pfadd == NULL) {
		return -2;
	}
	//根据函数参数实现对应函数的调用
	int x = 5;
	int y = 10;
	int z = 0;
	z = pfadd(3,4);
	cout << z << endl;
	system("pause");
	return 0;
}

版权声明:本文为qq_35373827原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。