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函数中调用函数。

  • 相关阅读:
    linux系统下安全管理
    Linux查看所有用户用什么命令
    linux下配置ip地址四种方法(图文方法)
    如何在linux系统中设置静态ip地址
    算法与cpu
    汇编 分支之跳转结构程序设计--待处理文档
    从汇编的角度理解程序(二)—— 分支和循环控制
    指令计数器--Program counter
    类型的分类
    CPU的内部架构和工作原理
  • 原文地址:https://www.cnblogs.com/tk091/p/TK.html
Copyright © 2011-2022 走看看