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

2016-02-19 08:59 11 1 收藏

想要天天向上,就要懂得享受学习。图老师为大家推荐解析VC中创建DLL,导出全局变量,函数和类的深入分析,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

【 tulaoshi.com - 编程语言 】

一.创建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 = "PIendl;

  cout"GlobalVariable = "GlobalVariableendl;

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

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

  return 0;
 }

来源:http://www.tulaoshi.com/n/20160219/1589083.html

延伸阅读
标签: Web开发
在JavaScript中,我们应该尽可能的用局部变量来代替全局变量,这句话所有人都知道,可是这句话是谁先说的?为什么要这么做?有什么根据么?不这么做,对性能到底能带来多大的损失?本文就来探讨这些问题的答案,从根本上了解变量的读写性能都和哪些因素有关。 著作权声明 本文译自 Nicholas C. Zakas 于2009年2月10日在个人网站上发表...
首先来看一下使用Java语言编写的Android应用程序从源码到安装包的整个过程,示意图如下,其中包含编译、链接和签名等: (1)使用aapt工具生成R.java文件 可以先通过搭建好的Eclipse开发环境创建一个未编译的Android工程,记的一定要将Eclipse中Project菜单下的Build Automatically选项前面的对勾去掉后再去创建工程。创建好未编译的工...
点击上传按钮后,webwork的程序流如下: step 1)进入ServletDispatcher.service public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException { ........ request = wrapRequest(request); ......... } step2)进入ServletDispatcher.wrapRequest protect...
问题 C语言以及C++语言中的const究竟表示什么?其具体的实现机制又是如何实现的呢? 本文将对这两个问题进行一些分析,简单解释const的含义以及实现机制。 问题分析 简单的说const在C语言中表示只读的变量,而在C++语言中表示常量。关于const在C与C++语言中的使用以及更多的区别,以后有时间另开一贴说明。 那么const究竟是如何实现的...
本文详细解释了如何在C++Builder中使用全局变量。 作者:yifei(尹加俊) 信箱:yifei1900@163.com 如何在C++Builder中使用全局变量? (1).如果我在一个公用的头文件中定义一个变量,在其它单元中可以直接使用它吗?如下: //--------------------------------Globals.h---------------------------------- ...

经验教程

282

收藏

65
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部