C++笔记-DLL的编写与调用
发布日期:2021-06-30 10:40:50 浏览次数:2 分类:技术文章

本文共 1741 字,大约阅读时间需要 5 分钟。

目录

 

 


 

基本概念

Visual Studio的编译环境下,DLL分为3类:

非MFC的DLL,使用SDK API进行编程,能被所有语言调用。

MFC规则DLL,可以使用MFC进行编程,能被其他语言调用。

MFC扩展DLL,可以使用MFC进行编程,但只能被MFC编写的程序调用。 

// dllmain.cpp : 定义 DLL 应用程序的入口点。#include "stdafx.h"BOOL APIENTRY DllMain( HMODULE hModule,                       DWORD  ul_reason_for_call,                       LPVOID lpReserved					 ){    ...    ...    ...    ...    ...    ...}

hMoulde:指向dll实例的句柄;

ul_reason_for_call:指明dll被调用的原因

LPVOID:保留,不使用。

内部为:

{	switch (ul_reason_for_call)	{	case DLL_PROCESS_ATTACH:	case DLL_THREAD_ATTACH:	case DLL_THREAD_DETACH:	case DLL_PROCESS_DETACH:		break;	}	return TRUE;}

DLL_PROCESS_ATTACH:当进程第一次链接DLL并通过它的入口点时,会得到这个参数。

DLL_PROCESS_DETACH:进程在空间内取消DLL映射时,得到这个参数。

DLL_THREAD_ATTACH:每当新线程创建时,系统会对所有映射的DLL传入此参数调用入口函数。

DLL_THREAD_DETACH:每当线程退出或返回时,系统会对所有映射的DLL传此参数要求执行对应清理工作。

 

进程调用DLL的过程:

使用LoadLibrary加载需要的dll,

使用GetProcAddress获取函数入口

然后就可以调用了!

 

 

代码与实例

dll关键代码如下:

.h文件:

#pragma once#include "stdafx.h"#define ExportFunc _declspec(dllexport)extern "C" ExportFunc int Add(int a, int b);extern "C" ExportFunc int Sub(int a, int b);

.cpp文件

#include "stdafx.h"#include "ExportDLL.h"int Add(int a, int b){	return a + b;}int Sub(int a, int b){	return a - b;}

调用采用mfc:

typedef int(*ADD)(int a, int b);typedef int(*SUB)(int a, int b);void CInjecterDemoDlg::OnBnClickedButton1(){	HMODULE hModule = LoadLibraryW(_T("E:\\vs2012\\DllTest\\Debug\\DllTest.dll"));	if(!hModule){		return;	}	ADD Add;	SUB Sub;	Add = (ADD)GetProcAddress(hModule, "Add");	Sub = (SUB)GetProcAddress(hModule, "Sub");	if(!Add || !Sub){		return;	}	int Result;	Result = 0;	Result = Add(10, 5);	CString result;	result.Format(_T("%d"), Result);	MessageBox(result);	Result = Sub(10, 5);	result.Format(_T("%d"), Result);	MessageBox(result);	FreeLibrary(hModule);}

项目下载地址:

 

转载地址:https://it1995.blog.csdn.net/article/details/103301206 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C++笔记-远程线程注入
下一篇:Java工作笔记-生成及解析Json字符串

发表评论

最新留言

不错!
[***.144.177.141]2024年04月25日 03时26分12秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章