dll导出类(隐式加载)

本文介绍了如何使用_declspec(dllexport)在C++中导出整个类或类中的部分成员函数,包括导出过程、DLL代码实现、调用方法以及注意事项。通过实例展示了DLL文件的创建、类的定义与实现、头文件引用以及DLL的调用,确保了类的正确导入和使用。
摘要由CSDN通过智能技术生成

暂时还不知道如何显示加载整个类,现在先提供隐式加载方法。

1、导出整个类或仅导出类中的部分成员函数。

导出整个类:在类定义的关键词class加_declspec(dllexport)

导出成员函数:在成员函数定义加_declspec(dllexport)


2.dll代码

头文件inc.h

extern "C" class __declspec(dllexport) CKeyHand
{
public:
	CKeyHand(int i):m_ix(i)
	{

	}
	int GetKey();

	void print();
private:
	int m_ix;
};

*.cpp实现:

int CKeyHand::GetKey()
{
	return m_ix;
}
void CKeyHand::print()
{
	
	cout<<"m_ix="<<GetKey();
	
}


3.调用,lib和dll文件都需要

【注意】:此时需要加上inc.h头文件,不然会无法识别类。

#include "inc.h"

#pragma  comment(lib,".\\Debug\\MemDll.lib")


CKeyHand kh(10);
kh.print();

4.截图




【续】:显示加载导出类

本人用的这种方式有点取巧,但是可以起到隐藏信息的作用。

extern "C" __declspec(dllexport) CKeyHand* GetKeyHandle()
{
	CKeyHand* key = new CKeyHand(15);
	if (NULL==key)
	{
		return NULL;
	}
	return key;
}

方式是在dll.cpp中加一个导出函数,函数返回一个创建的类指针。

_keyhandle = (GetKeyHandle)WRITEDATAFUN(hmodule,"GetKeyHandle");
	if (_keyhandle)
	{
		CKeyHand* phand = _keyhandle();
		phand->print();
		delete phand;
		phand = NULL;
	}

函数指针就不写了,直接上调用的代码,用完记得delete,不然会有内存泄露。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值