C++学习记录004——创建DLL(不使用“__declspec(dllexport)”,需要写DEF文件)并调用

一、简介

概要:

上一篇文章C++学习记录003——创建DLL(“__declspec(dllexport)“ 版本,无需自己写DEF 文件)介绍了通过“__declspec(dllexport)”关键字导出函数接口。本文将介绍如何创建DLL,不使用“__declspec(dllexport)”,而是自己写def文件的方式导出接口。

二、具体

(一)创建C++”动态链接库(DLL)“项目

创建C++”动态链接库(DLL)“项目,给项目取个名字,比如我的项目名是”ComplexMath“。

(二)接口函数的创建与导出

(1)添加.h文件

跟上一篇文章说的一样,这个文件主要用来申明我们将要导出的接口函数。

项目上右击——>“添加” ——>"新建项" ——>“头文件” ——>给头文件取个名字 ,比如我的是”ComplexMathAPI.h“——>"添加"。

(2)添加.cpp文件

这里主要用来 实现 前面头文件中申明的接口函数。

项目上右击——>“添加” ——>"新建项"——>“C++文件” ——>给文件取个名字 ,比如我的是”ComplexMathAPI.cpp“——>"添加"。

(3)添加.def文件

这个文件主要用来导出函数接口。有了这个文件,即使函数前面不用“__declspec(dllexport)”关键字修饰也可以导出函数。

项目上右击——>“添加”——>“新建项”——>“代码”——>“模块定义文件(.def)”——>名字我就不改了,默认是“Source.def”——>“添加”。

(4)“ComplexMathAPI.h"代码

//ComplexMathAPI.h
#pragma once

#ifndef _COMPLEXMATHAPI_H_
#define _COMPLEXMATHAPI_H_


#ifdef __cplusplus
extern "C"
{
	int Multiple(int a,int b);
	int Division(int a,int b);
}
#else
    int Multiple(int a, int b);
    int Division(int a, int b);
#endif


#endif 

(5)”ComplexMathAPI.cpp“代码

//ComplexMathAPI.cpp
#include "pch.h"
#include "ComplexMathAPI.h"

int Multiple(int a, int b)
{
	return a * b;
}
int Division(int a, int b)
{
	return a / b;
}

到这一步,我们如果编译的话,是没有导出函数接口的,我们可以用Dependency工具,把DLL文件拖进去看,这时候可以看到是没有导出接口的。

(6)"Source.def"文件代码

LIBRARY 

EXPORTS
Multiple
Division

加了def文件之后,编译,再次用Dependency工具,把Dll文件拖进去看一下。

 接口已经成功导出。

三、编译

编译之后,在Debug 文件夹下(如果是Release 模式,则在Release文件夹下)会有“ComplexMath.dll”文件和“ComplexMath.lib”文件生成。这两个文件在后期调用DLL的过程中是关键。

四、调用

关于调用的方法,见”C++调用DLL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值