解析VC中创建DLL,导出全局变量,函数和类的深入分析

 更新时间:2013年05月17日 15:49:40   作者:  
本篇文章是对VC中创建DLL,导出全局变量,函数和类进行了详细的分析介绍,需要的朋友参考下
一.创建DLL
1.在VC中新建一个Win32空项目MathLib;
2.添加预编译头文件stdafx.h,定义导入导出控制符号:
复制代码 代码如下:

//stdafx.h
#pragma once
#define MATHLIB_EXPORT

3.添加包含要导出的全局变量,函数和类的头文件MathLib.h:
复制代码 代码如下:

 //MathLib.h
 #pragma once

 #ifdef MATHLIB_EXPORT
 #define MATHLIBAPI __declspec(dllexport)
 #else
 #define MATHLIBAPI __declspec(dllimport)
 #endif

 //macro
 #define PI 3.14149

 //Global variable
 extern MATHLIBAPI int GlobalVariable;

 //Function
 MATHLIBAPI int Add(int a,int b);

 //Class
 class MATHLIBAPI Math
 {
 public:
  int Multiply(int a,int b);
 };

4.添加所导出元素的实现文件MathLib.cpp
复制代码 代码如下:

 //MathLib.cpp
 #include "stdafx.h"
 #include "MathLib.h"

 int GlobalVariable = 100;

 int Add(int a,int b)
 {
  return a+b;
 }

 int Math::Multiply(int a,int b)
 {
  return a*b;
 }

二,测试所创建的DLL
测试代码:
复制代码 代码如下:

 #include "stdafx.h"
 #include <iostream>
 using namespace std;

 #include "../MathLib/MathLib.h"
 #pragma comment(lib,"../Debug/MathLib.lib")

 int _tmain(int argc, _TCHAR* argv[])
 {
  cout<<"Pi = "<<PI<<endl;

  cout<<"GlobalVariable = "<<GlobalVariable<<endl;

  int a = 20,b = 30;
  cout<<"a="<<a<<", "<<"b="<<b<<endl;
  cout<<"a+b = "<<Add(a,b)<<endl;

  Math math;
  cout<<"a*b = "<<math.Multiply(a,b)<<endl;

  return 0;
 }

相关文章

  • C++11互斥量的具体使用

    C++11互斥量的具体使用

    互斥量是一种同步原语,是一种线程同步的手段,用来保护多线程同时访问的共享数据,本文主要介绍了C++11互斥量的具体使用,感兴趣的可以了解一下
    2023-11-11
  • 深度揭秘C++面向对象编程中继承的核心概念

    深度揭秘C++面向对象编程中继承的核心概念

    我们知道C语言是面向过程的编程语言,C++在C语言的基础上进化出了面向对象的模型,而继承就是面向对象的重要属性,下面就让小编来和大家详细讲讲吧
    2023-07-07
  • 浅谈C++如何求等差素数列

    浅谈C++如何求等差素数列

    这篇文章主要介绍了浅谈C++如何求等差素数列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • c语言实现系统时间校正工具代码分享

    c语言实现系统时间校正工具代码分享

    这篇文章主要介绍了c语言实现系统时间校正工具,大家参考使用吧
    2014-01-01
  • C++类与对象的基础知识点详细分析

    C++类与对象的基础知识点详细分析

    类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型;变量就是可以变化的量,存储在内存中—个可以拥有在某个范围内的可变存储区域
    2023-02-02
  • Matlab实现简易纪念碑谷游戏的示例代码

    Matlab实现简易纪念碑谷游戏的示例代码

    《纪念碑谷》是USTWO公司开发制作的解谜类手机游戏,在游戏中,通过探索隐藏小路、发现视力错觉以及躲避神秘的乌鸦人来帮助沉默公主艾达走出纪念碑迷阵。本文将用Matlab编写简易版的纪念碑谷游戏,感兴趣的可以了解一下
    2022-03-03
  • C语言算法积累加tag的循环队列

    C语言算法积累加tag的循环队列

    这篇文章主要为大家介绍了C语言算法积累加tag的循环队列的解题思路,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • C++实现动态规划过程详解

    C++实现动态规划过程详解

    动态规划是解决一类最优问题的常用方法,它是解决最优化问题的一种途径,在本文中,我们将讨论如何使用C++实现动态规划算法,并提供一些示例来帮助您更好地理解该算法
    2023-05-05
  • C++中STL的常用算法总结

    C++中STL的常用算法总结

    这篇文章主要介绍了C++ STL中一些常见算法的使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • c++ 封装一个截图服务

    c++ 封装一个截图服务

    这篇文章主要介绍了c++ 封装一个截图服务的方法,帮助大家更好的理解和使用c++,感兴趣的朋友可以了解下
    2021-01-01

最新评论