用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用

1.用VS2017编写一个C++动态链接库(DLL)给 易语言,C++,C#等第三方调用
2.开发环境VS2017

 

创建DLL

第一步:

首先我们VS界面左上角:文件(F)-》新建项目-》visual C++ -》windows 桌面 -》动态链接库(DLL)

用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第1张图片

得到以下界面

用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第2张图片

第二步:

我们新建一个头文件:用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第3张图片

第三步:

新建一个Dll1.cpp文件

用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第4张图片

在新建Dll1.cpp文件里面编写代码
1.需要用到头文件

// Dll1.cpp : 定义 DLL 应用程序的导出函数。
//

#include "Dll1.h"
#include "pch.h"
#include 

//两数相加
int WINAPI add(int n1, int n2)
{
	return n1 + n2;
}

 

用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第5张图片第四步:

我们在  头文件里:声明函数

#pragma once

int WINAPI add(int n1, int n2);

用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第6张图片

第五步:

导出函数:有 3种 导出方法,头文件和cpp都要改
1.第一种:在函数返回值类型前面加上 __declspec(dllexport)

__declspec(dllexport) int WINAPI add(int n1, int n2);

得到效果如图:
在这里插入图片描述
由于C++支持函数重载,国人称之为 “名称粉碎机制” 所以导出函数名会改变,第三方调用的时候需带如图名称,显然不是很适合咱

2.第二种:在函数返回值类型前面加上 extern “C” __declspec(dllexport) 指定该函数是个C语言的函数

extern "C" __declspec(dllexport) int WINAPI add(int n1, int n2);

得到效果如图:
在这里插入图片描述
第三方调用的时候需带如图名称了,显然也不是很合适
3.第三种:新建 “Dll1.def” 文件实现函数导出

用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第7张图片
在 “Dll1.def ” 写入代码:

LIBRARY
EXPORTS
add

.def 文件中的第一条 LIBRARY 语句不是必须的,但LIBRARY 语句后面的 DLL 的名称必须正确,即与生成的动态链接库的名称必须匹配。此语句将 .def 文件标识为属于 DLL。链接器将此名称放到 DLL 的导入库中。

EXPORTS语句列出名称,可能的话还会列出 DLL 导出函数的序号值。通过在函数名的后面加上 @ 符和一个数字,给函数分配序号值。当指定序号值时,序号值的范围必须是从 1 到 N,其中 N 是 DLL 导出函数的个数。
用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第8张图片
得到效果如图:

生成解决方案

用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第9张图片
用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第10张图片

此时我们就可以第三方程序调用这个DLL了;

 

易语言调用例子:

1.将DLL放到运行目录

.版本 2
.支持库 spec

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕

调试输出 (“5+9的计算结果=”, add (5, 9))
.版本 2

.DLL命令 add, 整数型, "Dll1.dll", "add"
    .参数 a, 整数型
    .参数 b, 整数型

用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第11张图片用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第12张图片

用VS2017编写一个C++动态链接库(DLL)供第三方调用 给 易语言,C++,C#等第三方调用_第13张图片

 

你可能感兴趣的:(win10,C++)