• 用VC创建DLL动态链接库


     1.1 创建dll项目


    1.2 为dll项目编写源文件

    头文件dllDemo.h
    extern "C" _declspec(dllexport) int Sum(int a,int b);//加法函数。
    extern "C" _declspec(dllexport) int Max(int a, int b);//取较大值函数
    extern "C" _declspec(dllexport) int Min(int a, int b);//取较小值函数源文件dllDemo.cpp
    大气象 
    #include "dllDemo.h"
    extern "C" _declspec(dllexport)int Sum(int a, int b)
    {return a+b;}
    extern "C" _declspec(dllexport)int Max(int a, int b)
    {
        if(a>=b)
            return a;
        else
            return b;
    }
    extern "C" _declspec(dllexport)int Min(int a, int b)
    {
        if(a>=b)
            return b;
        else
            return a;
    }
    1.3 生成dll文件
    编译源文件,如果没有出现错误提示,那么,在项目文件根目录的Debug文件夹内会生成一个dll文件“dllDemo.dll”。
     
     
    2 DLL调用
    2.1 用C++调用显式链接

    新建一个Win32的控制台程序进行显式调用:
    1. 新建“dllConsoleEvident”的Win32控制台程序项目
    2. 新建cpp文件“dllConsoleEvident.cpp”
    3. 将在第一节中,在Debug目录下编译生成的“dllDemo.dll”(显式调用时只需要这一个文件就够了)文件复制到“dllConsoleEvident”项目下的Debug文件夹根目录下
    4. 在“dllConsoleEvident.cpp”文件中编写以下代码对dll中的函数进行显式调用 
    代码:
    #include <iostream>
    #include<windows.h>
    using namespace std;
    void main(void)
    {
     typedef int(*pMax)(int a,int b);
     typedef int(*pMin)(int a,int b);
     pMax Max=NULL;
     pMin Min=NULL;
     HINSTANCE hDLL;
     hDLL=LoadLibrary(L"dllDemo.dll");//加载动态链接库MyDll.dll文件;
     Max=(pMax)GetProcAddress(hDLL,"Max");
     Min=(pMin)GetProcAddress(hDLL,"Min");
     if (Max)//如果取出函数成功,则执行下面的语句
     {
      int A=Max(5,8);
      cout<<"比较的结果为"<<A;
     }
     if (Min)
     {
      int B=Min(5,8);
      cout<<"比较的结果为"<<B;
     }
     FreeLibrary(hDLL);//卸载MyDll.dll文件;}
    }
     

    from:http://www.2cto.com/kf/201205/132151.html
     

  • 相关阅读:
    web学习---html,js,php,mysql一个动态网页获取流程
    用正则表达式做替换
    Array.prototype.slice.call(arguments)
    javascript join以及slice,push函数
    SQLServer中跨服务器跨数据库之间的数据操作
    SQL Server里面如何导出包含数据的SQL脚本
    Sql Server 常用日期格式
    Microsoft SQL Server下的SQL语句
    多线程与UI操作(二)
    多线程与UI操作(一)
  • 原文地址:https://www.cnblogs.com/zhangmo/p/2607015.html
Copyright © 2020-2023  润新知