【VS2010学习笔记】【编程实例】 (含有类的动态链接库的封装和调用)
接着前面一篇,【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学习笔记】【编程实例】 (含有类的动态链接库的封装和调用)相关推荐
- # C# 学习笔记(4) 类
C# 学习笔记(4) 类 面向对象编程主要是为了写出一个通用的代码,屏蔽差异,方便开发大型项目.类就是面向对象编程的核心之一.和C语言的结构体相比,结构体拥有的功能,类统统都有,除此之外,类还有许多新 ...
- Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25
Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25 目录 Rule20 接口优于抽象类 Rule21 为后代设计接口 Rule22 接口只用于定义类型 ...
- expect学习笔记及实例详解【转】
1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示: 1.1 首行加上/usr/bin/expect 1.2 spawn: 后面加上需要执行的shell命令,比如说 ...
- Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- AJPFX学习笔记JavaAPI之String类
学习笔记JavaAPI之String类 [size=10.5000pt]一.所属包java.lang.String,没有子类.特点:一旦被初始化就不可以被改变. 创建类对象的两种方式: String ...
- JDBC学习笔记02【ResultSet类详解、JDBC登录案例练习、PreparedStatement类详解】
黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...
- Python学习笔记:创建分数类
Python学习笔记:创建分数类 1.编写创建分数类.py # 创建分数类from math import gcd# 定义分数类 class Fraction: def __init__(self, ...
- ZYNQ学习笔记_GPIO实例:通过EMIO实现按键控制LED
ZYNQ学习笔记_GPIO实例:通过EMIO实现按键控制LED 总体思路 Block Design界面配置IP核并导出硬件配置 在SDK中编写C代码 下载PS和PL的联合工程到开发板 总体思路 首先需 ...
- Maple学习笔记——编程
Maple学习笔记--编程 编写方式: 编写Procedures(过程程序) 条件和循环语句 for 和while循环语句 for 循环 while循环 程序调试 代码分析 编写方式: 2-D/1-D ...
- Python学习笔记编程小哥令狐~持续更新、、、
Python学习笔记~编程小哥令狐 文章目录 Python学习笔记~编程小哥令狐 一.Python运行发生情况 二.变量 2.1变量引入前说明 2.2变量的命名和使用 2.3字符串 2.3.1使用方法 ...
最新文章
- 安卓java修改按钮大小_android弹出activity设置大小的方法
- c语言220程序,《C语言程序实例大全》原代码220例
- RHEL-5搭建SSH服务器
- Equals方法与==运算符的使用
- A good memory allocator is everything that I need
- 5_jfoenix_运行jfoenix官方演示,切换片段,部署
- 【渝粤教育】国家开放大学2018年秋季 1320T关系营销 参考试题
- 数据结构及算法之快速排序-python实现
- srsLTE源码学习:度量中心:metrics_hub.h
- Java字符串与日期互转
- 编程心得体会_CimatronE14高级五轴第三步,平行于曲线铣,会3轴编程更易理解
- php 每日一句名人名言,每日一句人生格言
- !!!后续博客写到简书 + 博客园留博客目录
- 数据结构之顺序表(C语言版)
- 读一本自己心爱的书,冒什么风险都是值得的
- 解决fegin post requestbody 400报错问题
- mysql数据库教程外联_活字格外联数据库SQLServer和Mysql的经验(大多数经验也适合其它使用外联数据库的平台)...
- Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))【附带实例源码】...
- NKOI 2008 涂色
- 免费网站采集程序怎么规避百度飓风算法
热门文章
- HP02: ssh: Could not resolve hostname hp02: Name or service not known HP01: ssh: Could not resolve h
- 算法的时间复杂度和空间复杂度(java)
- pandas创建series三种方法
- 计算机组装内部线的整理,计算机组装与维护笔记整理.doc
- java发送email_java发送email一般步骤(实例讲解)
- linux下mysql中文乱码_linux下mysql中文乱码
- Javascript:通过服务器相对路径下载文件到本地
- Fullpage:基础学习
- presto、druid、sparkSQL、kylin的对比分析
- python-Error Message: 'float' object cannot be interpreted as an integer