• 静态库和动态库的使用


    1.静态库使用比较简单,就两步

    @1包含静态库头文件#include "文件名"

    @2预处理加载静态库 #pragma comment(lib,"库文件名")

    2.再看动态库

    @1首先得有动态库文件,将动态库文件放在源码目录(不然后面加载得传入文件路径),这是我的动态库源文件内容

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<windows.h>
     4 
     5 //导出函数,加载的使用可以使用
     6 _declspec(dllexport) void popWindow()
     7 {
     8     MessageBoxA(0, "你好,世界", "唐嫣", 1);
     9 }
    10 
    11 _declspec(dllexport) int add(int a, int b)
    12 {
    13     return a + b;
    14 }

    @2包含windows头文件#include<windows.h>

    #include<stdio.h>
    #include<stdlib.h>
    #include<windows.h>

    @3声明指向要调用的函数的函数指针

    //定义函数指针来调用动态库,typedef简化函数指针类型定义
    typedef void(*ppop)();
    typedef int(*padd)(int, int);

    @4加载动态库

    HMODULE mydll = LoadLibraryA("动态库.dll");

    @5调用动态库模块函数

    ppop pw;//定义弹窗函数指针
    pw = (ppop)GetProcAddress(mydll, "popWindow");//获得动态库文件的模块(函数)的入口地址

    3.下面是调用动态库文件的全部源码

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<windows.h>
     4 
     5 //定义函数指针来调用动态库,typedef简化函数指针类型定义
     6 typedef void(*ppop)();
     7 typedef int(*padd)(int, int);
     8 
     9 
    10 void main()
    11 {
    12     HMODULE mydll = LoadLibraryA("动态库.dll");
    13     if (mydll == NULL)
    14     {
    15         printf("动态库加载失败");
    16     }
    17     else
    18     {
    19         //弹窗函数调用
    20         ppop pw;//定义弹窗函数指针
    21         pw = (ppop)GetProcAddress(mydll, "popWindow");//获得动态库文件的模块(函数)的入口地址
    22         if (pw != NULL)
    23         {
    24             pw();//调用
    25         }
    26 
    27         //求和函数调用
    28         padd pa;
    29         pa = (padd)GetProcAddress(mydll, "add");
    30         if (pa != NULL)
    31         {
    32             int m = pa(13, 16);
    33             printf("%d
    ", m);
    34         }
    35             
    36     }
    37 }

    4.查看运行结果,可见调用成功。

    需要程序源码的可以加我微信x241602私聊。
  • 相关阅读:
    Vue路由配置
    vue项目 favicon.ico不显示解决方案
    Vux使用AjaxPlugin发送请求跨域问题解决
    改变vux样式,自定义样式
    Hive LLAP
    GitHub提交代码无contributions记录解决办法
    Java websocket+ nginx+redis负载均衡上实现单对单通讯
    springboot异步接口
    C#中$的用法(转载)
    vmware-tools灰色而无法安装的问题
  • 原文地址:https://www.cnblogs.com/huipengbo/p/6919432.html
Copyright © 2020-2023  润新知