visual stdio动态库的使用

导出类和使用方式

#ifndef PCH_H
#define PCH_H

// 添加要在此处预编译的标头
#include "framework.h"

#ifdef _WIN32
#ifdef MYCLASS_EXPORTS
#define MYCLASS_API __declspec(dllexport)
#else
#define MYCLASS_API __declspec(dllimport)
#endif
#else
#define MYCLASS_API
#endif

class MYCLASS_API MyClass {
public:
    MyClass();
    ~MyClass();

    void SayHello();
};


#endif //PCH_H

使用 __declspec(dllexport) 标记类的导出

// pch.cpp: 与预编译标头对应的源文件

#include "pch.h"
#include <stdio.h>
#include <iostream>
// 当使用预编译的头时,需要使用此源文件,编译才能成功。
void MyClass::SayHello()
{
	std::cout << "111" << std::endl;
}

生成后对应目录会生成对应的.dll 和 .lib两个库

在别的程序中需要使用该动态库.dll时,不仅需要将.dll放在对应的目录下,还需要配置如下属性
将该动态库对应的.lib添加到如下配置才可以使用导出类的动态库
在这里插入图片描述
配置成功后就可以new该导出类的对象
如果new出该类的对象成功后,类成员函数基本可以使用,但是有的成员函数不可以使用,大概率是.dll的头文件和.dll动态库 .lib库版本不一致导致的

导出函数

在项目中添加def文件

LIBRARY 后面是你的目标名字
EXPORTS 下面是要导出的函数名字,后面加上@1这些序号。

在这里插入图片描述
添加输入文件
如果写完之后直接运行,那么生成的dll还是没有函数导出,原因是因为没有添加输入文件,解决方法如下:

点击“调试”–“xx调试属性”,在“链接器”–“输入”里面选择添加你的文件名字,然后保存确认
在这里插入图片描述

重新生成解决方案,然后使用depends检测
在这里插入图片描述

可以看到函数都成功显示,导出成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值