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

本文详细介绍如何在Visual Studio中使用C++创建含有类的动态链接库(DLL)。通过具体步骤和示例代码,展示了DLL的创建过程及如何从其他项目中调用这些类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    接着前面一篇,【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

                  优快云(l460602540):dll导出类的实现


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无敌三角猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值