DLL的动态(手工)加载

手工加载

使用LoadLibrary来加载dll
使用FreeLibrary来卸载dll
它提供了一种在运行时、手工加载dll的技术手段,增加了编程的灵活性。

手工加载的特点

1.在需要的时候才加载,用完了就卸载
2.为了能够找到dll的函数地址,需要将函数声明为C函数
3.只需要*.dll文件,不需要.h和.lib

对DLL的要求

(1) 要求待调用的函数按"C"方式编译(符号名即函数名)
(2) dll文件放在可被系统搜索到的路径

1. 制作my.dll

里面添加一个C的函数,将函数声明为一个C的函数

extern "C" MYDLL int Add(int a, int b);

(注:将extern "C"放在最前面)

5804969-07d7f53aeb608010.png
mydll.h
5804969-79e7942cf5884c42.png
mydll.cpp

2、动态加载

新建空项目,添加cpp文件

项目属性|配置属性|常规|字符集:使用多字节字符
将制作的dll文件部署好

#include <stdio.h>

//包含Windows的头文件
#include <windows.h>

int main() {
    HINSTANCE handle = LoadLibrary("DLL_7.dll");
    if (handle)
    {
        //定义要找的函数原型
        typedef int(*DLL_FUNCATION_ADD) (int, int);

        //找到目标函数的地址
        DLL_FUNCATION_ADD dll_fuc = (DLL_FUNCATION_ADD)GetProcAddress(handle, "Add");
        if (dll_fuc)
        {
            //调用该函数
            int result = dll_fuc(371, 150);
            printf("result:%d\n",result);
        }
        //卸载
        FreeLibrary(handle);
    }
    getchar();
    return 0;
}

❤️我的目标是:someday,即便你花钱看我的文章,也会觉得心满意足


5804969-64ca917b7b70f881.jpg
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NiceBlueChai

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值