接着前面一篇,【VS2010学习笔记】【编程实例】(在Visual Studio中使用C++创建和使用DLL),前面一篇对于函数类的动态链接库的封装已经写的相当详细了,而且所讲的内容比较实用,之前查的一些其他的DLL封装的说明,大多需要设置包含目录之类的,但是最终也没有成形。

在上篇的最后也介绍含有类的DLL的封装,但是缺少对DLL中类的调用的说明,这里主要想补充一下,新建DLL工程,设置为不是空项目,命名为ExportClassFromDllDemo:

添加头文件ExportClassFromDllDemo.h,添加代码:

#ifndef _EXPORTVARFROMDLLDEMO_H_
#define _EXPORTVARFROMDLLDEMO_H_#ifdef __cplusplus
extern "C" {
#endif#ifdef EXPORTCLASSFROMDLLDEMO_EXPORTS
#define EXPORTCLASSFROMDLLDEMO_API _declspec(dllexport)
#else
#define EXPORTCLASSFROMDLLDEMO_API _declspec(dllimport)
#endif
class EXPORTCLASSFROMDLLDEMO_API CTestClass
{
public:static  int Add(int a, int b);void SetA(int a);int GetA();private:int m_a;
};
#ifdef __cplusplus
}
#endif
#endif

往生成的ExportClassFromDllDemo.cpp文件中添加如下代码:

// ExportClassFromDllDemo.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include "ExportClassFromDllDemo.h"
int CTestClass::Add(int a, int b)
{return (a + b);
}
void CTestClass::SetA(int a)
{m_a = a;
}
int CTestClass::GetA()
{return m_a;
}

点击编译即可生成相应的DLL。(工程下载)

含有类的DLL的调用:

调用的方式加载时动态链接的方式一样,需要包含生成DLL的头文件和导入库文件,需要将头文件和Debug文件拷贝到新的工程目录下,应该可以通过修改路径的方式添加,看到别人有这样做的。但是之前测试出问题,这种方式没有问题就采用了,调用的主程序代码如下:

// DllClassTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "ExportClassFromDllDemo.h"          //这里要包含生成DLL的头文件
#pragma comment(lib,"..\\Debug\\ExportClassFromDllDemo.lib")   //这里要导入生成的库文件
int _tmain(int argc, _TCHAR* argv[])
{CTestClass ad;printf("sum=%d",ad.Add(2,3));while(1);return 0;
}


(工程下载)

运行结果为:

参考: 果冻想:在Visual Studio中使用C++创建和使用DLL

CSDN(l460602540):dll导出类的实现

【VS2010学习笔记】【编程实例】 (含有类的动态链接库的封装和调用)相关推荐

  1. # C# 学习笔记(4) 类

    C# 学习笔记(4) 类 面向对象编程主要是为了写出一个通用的代码,屏蔽差异,方便开发大型项目.类就是面向对象编程的核心之一.和C语言的结构体相比,结构体拥有的功能,类统统都有,除此之外,类还有许多新 ...

  2. Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25

    Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25 目录 Rule20 接口优于抽象类 Rule21 为后代设计接口 Rule22 接口只用于定义类型 ...

  3. expect学习笔记及实例详解【转】

    1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示: 1.1 首行加上/usr/bin/expect 1.2 spawn: 后面加上需要执行的shell命令,比如说 ...

  4. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  5. AJPFX学习笔记JavaAPI之String类

    学习笔记JavaAPI之String类 [size=10.5000pt]一.所属包java.lang.String,没有子类.特点:一旦被初始化就不可以被改变. 创建类对象的两种方式: String ...

  6. JDBC学习笔记02【ResultSet类详解、JDBC登录案例练习、PreparedStatement类详解】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  7. Python学习笔记:创建分数类

    Python学习笔记:创建分数类 1.编写创建分数类.py # 创建分数类from math import gcd# 定义分数类 class Fraction: def __init__(self, ...

  8. ZYNQ学习笔记_GPIO实例:通过EMIO实现按键控制LED

    ZYNQ学习笔记_GPIO实例:通过EMIO实现按键控制LED 总体思路 Block Design界面配置IP核并导出硬件配置 在SDK中编写C代码 下载PS和PL的联合工程到开发板 总体思路 首先需 ...

  9. Maple学习笔记——编程

    Maple学习笔记--编程 编写方式: 编写Procedures(过程程序) 条件和循环语句 for 和while循环语句 for 循环 while循环 程序调试 代码分析 编写方式: 2-D/1-D ...

  10. Python学习笔记编程小哥令狐~持续更新、、、

    Python学习笔记~编程小哥令狐 文章目录 Python学习笔记~编程小哥令狐 一.Python运行发生情况 二.变量 2.1变量引入前说明 2.2变量的命名和使用 2.3字符串 2.3.1使用方法 ...

最新文章

  1. 安卓java修改按钮大小_android弹出activity设置大小的方法
  2. c语言220程序,《C语言程序实例大全》原代码220例
  3. RHEL-5搭建SSH服务器
  4. Equals方法与==运算符的使用
  5. A good memory allocator is everything that I need
  6. 5_jfoenix_运行jfoenix官方演示,切换片段,部署
  7. 【渝粤教育】国家开放大学2018年秋季 1320T关系营销 参考试题
  8. 数据结构及算法之快速排序-python实现
  9. srsLTE源码学习:度量中心:metrics_hub.h
  10. Java字符串与日期互转
  11. 编程心得体会_CimatronE14高级五轴第三步,平行于曲线铣,会3轴编程更易理解
  12. php 每日一句名人名言,每日一句人生格言
  13. !!!后续博客写到简书 + 博客园留博客目录
  14. 数据结构之顺序表(C语言版)
  15. 读一本自己心爱的书,冒什么风险都是值得的
  16. 解决fegin post requestbody 400报错问题
  17. mysql数据库教程外联_活字格外联数据库SQLServer和Mysql的经验(大多数经验也适合其它使用外联数据库的平台)...
  18. Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))【附带实例源码】...
  19. NKOI 2008 涂色
  20. 免费网站采集程序怎么规避百度飓风算法

热门文章

  1. HP02: ssh: Could not resolve hostname hp02: Name or service not known HP01: ssh: Could not resolve h
  2. 算法的时间复杂度和空间复杂度(java)
  3. pandas创建series三种方法
  4. 计算机组装内部线的整理,计算机组装与维护笔记整理.doc
  5. java发送email_java发送email一般步骤(实例讲解)
  6. linux下mysql中文乱码_linux下mysql中文乱码
  7. Javascript:通过服务器相对路径下载文件到本地
  8. Fullpage:基础学习
  9. presto、druid、sparkSQL、kylin的对比分析
  10. python-Error Message: 'float' object cannot be interpreted as an integer