用VS2017編寫一個C++動態鏈接庫(DLL)供第三方調用 給 易語言,C++,C#等第三方調用

1.用VS2017編寫一個C++動態鏈接庫(DLL)給 易語言,C++,C#等第三方調用
2.開發環境VS2017

 

創建DLL

第一步:

首先我們VS界面左上角:文件(F)-》新建項目-》visual C++ -》windows 桌面 -》動態鏈接庫(DLL)



得到以下界面

第二步:

我們新建一個頭文件:<Dll1.h>

第三步:

新建一個Dll1.cpp文件

在新建Dll1.cpp文件裏面編寫代碼
1.需要用到頭文件<Dll1.h> <pch.h>和 <Windows.h>

// Dll1.cpp : 定義 DLL 應用程序的導出函數。
//

#include "Dll1.h"
#include "pch.h"
#include <Windows.h>

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

 

第四步:

我們在 <Dll1.h> 頭文件裏:聲明函數

#pragma once

int WINAPI add(int n1, int n2);

第五步:

導出函數:有 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” 文件實現函數導出


在 “Dll1.def ” 寫入代碼:

LIBRARY
EXPORTS
add

.def 文件中的第一條 LIBRARY 語句不是必須的,但LIBRARY 語句後面的 DLL 的名稱必須正確,即與生成的動態鏈接庫的名稱必須匹配。此語句將 .def 文件標識爲屬於 DLL。鏈接器將此名稱放到 DLL 的導入庫中。

EXPORTS語句列出名稱,可能的話還會列出 DLL 導出函數的序號值。通過在函數名的後面加上 @ 符和一個數字,給函數分配序號值。當指定序號值時,序號值的範圍必須是從 1 到 N,其中 N 是 DLL 導出函數的個數。

得到效果如圖:

生成解決方案




此時我們就可以第三方程序調用這個DLL了;

 

易語言調用例子:

1.將DLL放到運行目錄

.版本 2
.支持庫 spec

.程序集 窗口程序集_啓動窗口

.子程序 __啓動窗口_創建完畢

調試輸出 (“5+9的計算結果=”, add (5, 9))
.版本 2

.DLL命令 add, 整數型, "Dll1.dll", "add"
    .參數 a, 整數型
    .參數 b, 整數型

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章