编写C++的Dll动态库

编写C++的Dll动态库编写C++的Dll动态库编写C++Dll动态库

一 dll入口函数介绍

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
/*

一个动态库可以被多个应用程序共享
但它只被加载(映射)一次

*/
// dll程序入口
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:// 在第一次加载动态库到系统的时候,只触发一次
    case DLL_THREAD_ATTACH:// 多个应用调用dll的时候触发,可能多次触发
    case DLL_THREAD_DETACH:// 多个应用在注销dll使用的时候触发,可能多次触发
    case DLL_PROCESS_DETACH:// 在最后销毁动态库的时候触发, 只触发一次
        break;
    }
    return TRUE;
}


二 动态库的类,函数,变量的导出

#pragma once

#define DllApi _declspec(dllexport)// 导出(告诉编译器,该函数开放给外部调用)

DllApi void HelloWorld();
#pragma once

#define DllApi extern "C" _declspec(dllexport)// 导出(告诉编译器,该函数开放给外部调用)

DllApi int Add(int,int);

class _declspec(dllexport) MyClass
{

};
class _declspec(dllexport) MyClass
{

};

三 动态库的加载

方式1:静态加载

方式1.项目属性设置
方式2.#pragma comment (lib,“*.lib”)

方式2:动态加载

步骤1.LoadLibrary
步骤2.GetProcAddress

四 动态库的使用

4.1 创建MFC项目进行dll的引用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

加载Dll流程:

4.2.MFC项目添加依赖项

在这里插入图片描述
在这里插入图片描述

4.3 附加库目录(用于添加动态库.dll或静态库.lib)

在这里插入图片描述

4.4 附加包含目录(用于添加头文件.h)

在这里插入图片描述

4.5 复制头文件和lib库

在这里插入图片描述
在这里插入图片描述

4.6 添加testH.h到头文件夹

在这里插入图片描述
在这里插入图片描述

4.7 代码书写引用

#include "testH.h"
#pragma comment(lib,"Dll1.lib")

void CMFCApplication1Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(true);
	sum1 =Add(add1,add2);
	UpdateData(false);
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值