zoukankan      html  css  js  c++  java
  • 动态链接库应用举例

    既然写了静态链接库,就顺带把动态链接库也学习下。

    创建一个动态链接库工程,名称为ConvertDynamicLib

    在cpp文件中写入下面的代码

     1 #include "stdafx.h"
     2 #include <stdlib.h>
     3 #include <windows.h>
     4 #include <stdio.h>
     5 
     6 BOOL APIENTRY DllMain( HANDLE hModule, 
     7                        DWORD  ul_reason_for_call, 
     8                        LPVOID lpReserved
     9                      )
    10 {
    11     return TRUE;
    12 }
    13 
    14 __declspec(dllexport) void BinToDec(char* szDecOutput,char* szBinInput)
    15 {
    16     int nDecimal=0;
    17     int Len=lstrlen(szBinInput);
    18     for (int i=0;i<Len;i++)
    19     {
    20         char h = szBinInput[Len-1-i];                                    
    21         char str[1];
    22         str[0]=h;
    23         int j = atoi(str);                                              
    24         for (int k=0;k<i;k++)                                            
    25         {
    26             j = j*2;
    27         }
    28         nDecimal = nDecimal+j;    
    29     }
    30     sprintf(szDecOutput,"%d",nDecimal);
    31 }
    32 
    33 __declspec(dllexport) void OctToDec(char* szDecOutput,char* szOctInput)
    34 {
    35     int nLenth = lstrlen(szOctInput);
    36     
    37     
    38     int nDecimal = 0;
    39     for(int i=0;i<nLenth;i++)
    40     {
    41         char h = szOctInput[nLenth-1-i];
    42         char str[1];
    43         str[0] = h;
    44         int j = atoi(str);
    45         for(int k=0;k<i;k++)
    46         {
    47             j=j*8;
    48         }
    49         nDecimal += j;
    50     }
    51     sprintf(szDecOutput,"%d",nDecimal);
    52 }
    __declspec(dllexport)在这里的意思是把后面的函数作为导出函数,以便可以在其它程序中使用

    编译

    ========================================

    新建一个控制台程序,将动态链接库的dll文件和lib文件拷贝到当前的工程目录中

    lib文件为编译时需要,dll为运行时需要

     1 #include "stdafx.h"
     2 #include <stdio.h>
     3 
     4 #pragma comment(lib,"ConvertDynamicLib.lib")
     5 void BinToDec(char* szDecOutput,char* szBinInput);
     6 void OctToDec(char* szDecOutput,char* szOctInput);
     7 
     8 
     9 int main(int argc, char* argv[])
    10 {
    11     char tk[256]="";
    12     char inputsz[256]="1010101001";
    13     BinToDec(tk,inputsz);
    14     printf("%s\n",tk);
    15     return 0;
    16 }

    看代码就知道,添加lib文件,声明dll中的函数

    然后在main函数中调用函数。

  • 相关阅读:
    bzoj1453
    276D
    855E
    bzoj1458
    树莓派 自启动连接阿里云物联网平台(一)
    树莓派 实现脚本程序自启动
    树莓派4B 系统镜像安装与boot配置
    2019-2020-2《网络对抗技术》 Exp1 PC平台逆向破解
    2019-2020-2 《网络对抗技术》 Exp0 kali 安装
    kali 添加使用 KDE 桌面环境
  • 原文地址:https://www.cnblogs.com/tk091/p/TK.html
Copyright © 2011-2022 走看看