zoukankan      html  css  js  c++  java
  • 静态库和动态库的使用

    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私聊。
  • 相关阅读:
    POJ 1300 Open Door
    POJ 2230 Watchcow
    codevs 1028 花店橱窗布置
    codevs 1021 玛丽卡
    codevs 1519 过路费
    codevs 3287 货车运输
    codevs 3305 水果姐逛水果街二
    codevs 1036 商务旅行
    codevs 4605 LCA
    POJ 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/huipengbo/p/6919432.html
Copyright © 2011-2022 走看看