MFC生成dll的区别

news/2025/1/15 21:49:23/

主要分三种:

A. 动态链接库(dll)

B.具有导出项的(dll)动态链接库

C.MFC动态链接库

对比项目:可以根据需要选择哪种dll方便

添加自定义导出功能Demo

1. 添加导出实现接口:

        A. 导出需要具有:__declspec(dllexport)

        B. 按照C语言的格式导出:extern "C"

下面是示例:
#ifdef __cplusplus
#define INTERFACE_API __declspec(dllexport)
#else
#define INTERFACE_API __declspec(dllimport)
#endif

class CGeneralInterface
{
public:
    CGeneralInterface();
    virtual ~CGeneralInterface();

    virtual BOOL    Open(CString csParam, CString &csErr) = 0;
    virtual void    Close() = 0;
    virtual BOOL    Write(LPCVOID pData, DWORD dwNumberOfBytesToWrite, CString &csErr) = 0;
    virtual UINT    Read(LPVOID pData, DWORD dwNumberOfBytesToRead, UINT nReadTotalTimeout, CString &csErr) = 0;
    virtual CString    GetParam(CString csParam, CString csStart, CString csEnd) = 0;
};
extern "C" INTERFACE_API CGeneralInterface* GeneralExport(void);

真正的实现,也是对外调用的接口:

CGeneralInterface* GeneralExport(void)
{
    return (CGeneralInterface*) new CGeneralCommunication();
}

对于实现类:
#ifdef   __cplusplus
extern "C" {
#endif // __cplusplus

    // 此类是从 dll 导出的
    class  CGeneralCommunication : public CGeneralInterface 
    {
    public:

         // 实现函数
    };

#ifdef __cplusplus
}
#endif //  __cplusplus
 


http://www.ppmy.cn/news/1521879.html

相关文章

Unity6 + UE5.4 PSO缓存实践记录

题图(取自COD冷战的着色器编译提示) PSO(管线状态对象 Pipeline State Object)是伴随现代图形API(DirectX12、Vulkan、Metal)而出现的概念,它本质上是单次绘制时渲染管线所处的状态信息的集合&…

Java实用类——操作日期和时间

Date类: Date 位于java.util.Date类:表示日期和时间SimpleDateFormat 位于java.text.SimpleDateFormat类:格式化日期类parse方法:将字符串转为日期类型 public static void main(String[] args) throws ParseException {//获得当…

Unity Adressables 使用说明(五)在运行时使用 Addressables(Use Addressables at Runtime)

一旦你将 Addressable assets 组织到 groups 并构建到 AssetBundles 中,就需要在运行时加载、实例化和释放它们。 Addressables 使用引用计数系统来确保 assets 只在需要时保留在内存中。 Addressables 初始化 Addressables 系统在运行时第一次加载 Addressable …

oracle事务隔离级别

文章目录 数据库事务概况1.事务相关概念2.事务的四个特性ACID : oracle事务隔离级别1 .两个事务并发访问数据库数据时可能存在的问题 数据库事务概况 一组SQL,一个逻辑工作单位,执行时整体修改或者整体回退。 1.事务相关概念 1)事务的提交和回滚&…

MongoDB-聚合查询操作介绍

目录 前言db.collection.aggregate()db.collection.aggregate()示例一db.collection.aggregate()示例二 复杂的聚合操作通过mongoimport导入测试数据复杂的聚合操作示例聚合操作的偏好设置-project函数聚合操作的偏好设置-unwind函数 前言 MongoDB聚合操作相当于关系型数据库S…

MATLAB基础应用精讲-【数模应用】Poisson检验(附MATLAB、python和R语言代码实现)

目录 几个高频面试题目 泊松分布的现实意义是什么,为什么现实生活多数服从于泊松分布? 算法原理 数学模型 参数估计与假设检验 (一) 参数估计 (二) 回归系数的假设检验 (三) 拟合优度检验 适用条件 SPSSPRO 1、作用 2、输入输出描述 3、案例示例 4、案例数据 …

区块链技术介绍

一.概述 1.什么是区块链? 区块链是一种分布式数据库技术,它以链式数据结构的形式存储数据,每个数据块与前一个数据块相关联,形成了一个不断增长的数据链。每个数据块中包含了一定数量的交易信息或其他数据,这些数据经…

Python可视化集大成之作 - Seaborn 介绍

我今天要介绍一款让你在数据可视化中游刃有余的利器——Seaborn包。作为Python数据可视化库中的一员,Seaborn不仅美观易用,而且功能丰富,是生物信息学中数据探索的好帮手。 为什么选择Seaborn? 1. 美观简洁 Seaborn的默认主题和颜…