zoukankan      html  css  js  c++  java
  • 动态链接库Win32 DLL的创建和使用

    摘要

           利用Visual C++6.0创建和使用DLL(Dynamic-Link Library).

    概述

       在实际编程时,我们可以把完成某种功能的函数放在一个动态链接库中,然后给其他程序调用。

       WinAPI中所有的函数都包含在3个最重要的DLL中。

        • Kernel32.dll

            它包含那些用于管理内存、进程和线程的函数,例如CreateThread函数;

        • User32.dll

            它包含那些用于执行用户界面任务的函数,例如CreateWindow函数;

        • GDI32.dll   

            它包含那些用于画图和显示文本的函数。

    用法 

     新建一个Win32 Console Application工程:

    以MathLib为工程名称新建Win32 Dynamic-Link Library的空工程,

    添加C++ Source File 源文件到工程中,命名为MathLib.c

    添加以下代码:

     1 #define MATH_API _declspec(dllexport)
    2 #include "MathLib.h"
    3 int add(int a,int b)
    4 {
    5 return a+b;
    6 }
    7 int subtract(int a,int b)
    8 {
    9 return a-b;
    10 }

    添加C/C++ Header File 头文件到工程中,命名为MathLib.h

    1 #ifdef MATH_API
    2 #else
    3 #define MATH_API _declspec(dllimport)
    4 #endif
    5 MATH_API int add(int a,int b);
    6 MATH_API int subtract(int a,int b);

    编译后生成MathLib.dll和MathLib.lib两个动态链接库文件。

    测试

    • 隐式调用

    新建MFC AppWizard[exe]可执行工程DllTest,用于测试刚才新建动态链接库MathLib的功能。

    复制MathLib.dll,MathLib.lib,MathLib.h到当前工程,

    在DllTestDlg.cpp中添加头文件引用:

     

    #include "MathLib.h"

     

    添加MathLib.h头文件至工程,

     

    在Project->Setting->Link->object/library modules:添加MathLib.lib

     

    添加一个按钮Add到Dialogue中,在Add按钮的响应函数中添加以下代码:

     

    1 void CDllTestDlg::OnBtnMath() 
    2 {
    3 // TODO: Add your control notification handler code here
    4 CString res;
    5 res.Format("10+2=%d",add(10,2));
    6 MessageBox(res);
    7 }

    编译运行程序,

     

     

    成功运行MathLib中的加法功能。

    工程文件:

     

     

     

     

          

        
    作者:wanglei_wan
        
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    二 .数据库(Data)操作
    一. 数据库(Data)基础
    五种IO/模型
    并发编程 (协程)
    七.并发编程 (线程池,返回值,回调函数)
    六.并发编程 (线程对列)
    五.并发编程 (线程事件)
    四.并发编程 (线程信号量)
    三.并发编程 (线程锁)
    二.并发编程 (程序中线程操作)
  • 原文地址:https://www.cnblogs.com/because/p/2357109.html
Copyright © 2011-2022 走看看