zoukankan      html  css  js  c++  java
  • 使用C++调用C++ dll的关键步骤

    被调用的dll项目

    /*dllDemo.h中*/
    extern "C" _declspec(dllexport) void Func(void); //接口函数声明

    /*dllDemo.cpp中*/
    #include 
    "dllDemo.h"
    extern "C" _declspec(dllexport)void Func(void)    //接口函数定义
    {
        
    return;
    }

    _declspec,Declare Specification,这个关键字可以理解为声明规范。它有许多用法,语法如下:

    __declspec ( extended-decl-modifier-seq )

    配合dllexport和dllimport,分别表示导入和到导出dll接口函数。

    调用dll的项目 - 显式调用

    1)只需要dll文件

    2)在调用处用法如下

    代码
    // a)声明一个和dll接口函数规则相同的函数指针
    typedef void(*pFunc)(void); 
    pFunc doFunc
    =NULL;
    // b)加载动态链接库dll文件;
    HINSTANCE hDLL;
    hDLL 
    = LoadLibrary("dllDemo.dll"); 
    // c)本地函数指针获得dll中的接口函数;
    doFunc=(pFunc)GetProcAddress(hDLL,"Func"); 
    // d)调用
    if(doFunc)
    {
        doFunc();
    }

    3)调用完毕可以使用Freelibrary(hDLL)释放dll文件。 

    调用dll的项目 - 隐式调用

    1)需要dll

    2)需要lib,并且在项目依赖项中添加 

    3)调用处代码如下 

    //a) cpp头部声明来自dll的外部接口函数,函数名必须一样。
    extern "C"_declspec(dllimport) void Func(void);

    int main()
    {
        
    //b) 像使用其他函数一样使用dll接口函数
        Func();

        
    return 0;
    }

     4)运行期间无法释放dll。

    整理自:http://www.cnblogs.com/beer/archive/2010/08/19/1803560.html 

  • 相关阅读:
    [SCOI2008]奖励关
    [HNOI2015]落忆枫音
    [HAOI2012]高速公路
    [HNOI2012]集合选数
    A. 【UNR #2】积劳成疾
    整体二分
    [HNOI2015]亚瑟王
    [SDOI2010]星际竞速
    [SDOI2010]地精部落
    [SDOI2014]数数
  • 原文地址:https://www.cnblogs.com/mumuliang/p/1886132.html
Copyright © 2011-2022 走看看