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

  • 相关阅读:
    2018徐州网络赛H. Ryuji doesn't want to study
    P3388 【模板】割点
    数列分块入门 1 LOJ6277
    P2261 [CQOI2007]余数求和
    模拟微信小程序页面Page方法
    .Net Newtonsoft.Json 转json时将枚举转为字符串
    .NET CORE 中使用AutoMapper进行对象映射
    .NetMvc从http或本地下载pdf文件
    js给多级复杂动态变量赋值
    微信三方平台开发上传base64格式图片至临时素材
  • 原文地址:https://www.cnblogs.com/tk091/p/TK.html
Copyright © 2011-2022 走看看