c++导出动态库

代码下载:https://download.youkuaiyun.com/download/weixin_42295969/86637699

一、以类的方式导出动态库

导出

流程

导出关键字定义为API——>定义要导出类的父类并定义要导出的函数为虚函数——>继承
父类并覆盖实现虚函数、定义c语言形式的导出的生成实例的函数——>ide中设置项目配置类型为dll

1.定义导出关键字定义为API

#ifndef DLL_IMPORT
#define API __declspec(dllexport)
#else
#define API __declspec(dllimport)
#endif // !DLL_IMPORT

2.定义一个虚类:

这个虚类包括会包括需要导出的函数,需要设置为虚函数
同时这个类定义前面增加API也就是__declspec(dllexport)
在这里插入图片描述

class API InterfaceClass {
public:
    int result;
    //不建议在动态库中,直接导出C++基础数据类型数据.
    //对于标准库,标准模板库中,不同版本的库有着不同的实现,msvc有着不同的实现,可能会发生更改,则会出现问题.
    //因此推荐导出的都是C++的基础数据类型,即不需要引用的头文件的数据类型.
    //这也是在基类中,使用纯虚函数的原因.
    //std::string str;
    virtual void setpath(string path) = 0;
    virtual int read_Img() = 0;
};

3.实际继承的类的定义(对应的就是我们原本需要导出的类):

在这里插入图片描述

  • 区别就是这里需要在函数面前加上虚函数的定义;

4.使用c语言形式导出函数,函数获得类的实例

使用c语言形式的导出动态库,利用这个动态库就可以获得对应的类的对象,其实现如下:
在这里插入图片描述

API InterfaceClass* getInstance()
{
	InterfaceClass* ptr = new readImg();
	return ptr;
}

5.将项目属性中配置类型设置为dll

在这里插入图片描述

导入

流程

include头文件——>设置目录以及库目录——>设置链接——>调用类

1.include头文件

include头文件:在项目中导入头文件
在这里插入图片描述

2.设置目录以及库目录

设置目录以及库目录:
在这里插入图片描述

3.设置链接

设置链接名字:
在这里插入图片描述

4.设置链接

在cpp文件中调用动态库的类:
使用getInstance()获得对象即可使用类的函数
在这里插入图片描述

int main()
{
	InterfaceClass* readimg = getInstance();
	readimg->setpath("D://test.JPG");
	int ret=readimg->read_Img();
	cout << ret << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值