zoukankan      html  css  js  c++  java
  • C++调用DLL

    问题描述:

            C++调用DLL接口

    问题解决:

           1、声明提取DLL函数

    typedef int (_stdcall *plib_ver)(unsigned int *nVer);
       typedef int (_stdcall * pdes_encrypt)(unsigned char *szOut,unsigned char *szIn , unsigned int inlen,unsigned char *key,unsigned int keylen);
    
       typedef int (_stdcall * pdes_decrypt)(unsigned char *szOut,unsigned char *szIn , unsigned int inlen,unsigned char *key,unsigned int keylen);
     

    extern plib_ver  lib_ver;
       extern pdes_encrypt  des_encrypt ; 
       extern pdes_decrypt   des_decrypt ; 

        其中_stdcall这个关键字修饰的函数,其参数都是从右向左通过堆栈传递的(__fastcall 的前面部分由ecx,edx传), 函数调用在返回前要由被调用者清理堆栈。extern 声明DLL接口函数地址,在其他文件中实现,参见第二条:获取DLL函数地址

    在使用中未声明_stdcall 出现如下的错误信息:

    0_1327~1

       2.  获取DLL函数地址

    int init(char *path)
    {
        lib=LoadLibrary(path);
    
        if(lib)
        {
            lib_ver       = (plib_ver)GetProcAddress(lib,("lib_ver"));
            des_encrypt   = (pdes_encrypt)GetProcAddress(lib,("des_encrypt"));
            des_decrypt   = (pdes_decrypt)GetProcAddress(lib,("des_decrypt"));                
    
            if(NULL == lib_ver  ||  NULL == des_encrypt   ||  NULL == des_decrypt )    
            {            
                return 1;
            }
        }
        return 0;
    }

    LoadLibrary载入指定的动态链接库,并将它映射到当前进程使用的地址空间。一旦载入,即可访问库内保存的资源

    GetProcAddress函数检索指定的动态链接库(DLL)中的输出库函数地址。

    3、使用DLL函数

    int open(int port,int baud)
    {
        char path[]="C:\Users\Administrator\Desktop\JT500 RFID\JT500RFID\rfid\rfid\MasterRD.dll";
        int ret=init(path);
        ret&=rf_init_com(port,baud);
        return ret;
    }

    4、释放DLL

    int close()
    {
        int ret=rf_ClosePort();
        if (lib!=NULL)
        {
            ret&=FreeLibrary(lib);
            lib=NULL;
        }
        return ret;
    }
  • 相关阅读:
    封装的图片预加载,数据加载到浏览器底部加载数据
    自己封装的弹出层插件
    在规定的时间内出现动画.html
    WEB前端资源集
    前端优化几项
    移动H5前端性能优化指南
    微信小程序IDE(微信web开发者工具)安装、破解手册--转载
    微信小程序开发—快速掌握组件及API的方法---转载
    STM32数据类型定义
    HDOJ 4802 GPA
  • 原文地址:https://www.cnblogs.com/luosongchao/p/3598906.html
Copyright © 2011-2022 走看看