C++ 类打包LIB方法,创建 C 接口函数方法

2023-12-31 09:04

本文主要是介绍C++ 类打包LIB方法,创建 C 接口函数方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

起因:建立lib文件时,尽量提供最简单的接口参数及函数。不暴露内部数据结构!

解:

lib 源文件 Test.h

#ifndef __TEST_H__
#define __TEST_H__#ifndef BOOL
typedef unsigned char   BOOL;
#endifclass CTray
{
public:       GetLibVer(void) ;
private:u16 Data;
};#endif

2, Test.C

#include "Test.h"
#include "Test_Interface.h"u16 CTray::GetLibVer(void)
{return  Data;
}/********************************************/
//在源Cpp文件中增加 c接口文件
//建立对象
void IF_NewHandle( void* &handle)
{if(handle == NULL){Test* tmp = new Test();handle = tmp;}
}//销毁对象
void IF_DelHandle(void handle)
{delete ((Test*)handle);
}//调用 Test 类 内部函数
void IF_GetLibVer(void* handle)
{((Test*)handle)->GetLibVer();
}

3,Interface_Test.h

#ifndef __INTERFACE_TEST_H__
#define __INTERFACE_TEST_H__#ifdef __cplusplus
extern "C" {
#endif//接口函数声明
void IF_GetLibVer(void* handle);#ifdef __cplusplus
}
#endif

4,把上述工程编译生成 Test.lib 文件。

5, 把Test.lib文件和 Interface_Test.h 打包给别人即可。无需提供 Test.cpp 与 Test.h 文件。

6,使用方法。新工程包含 Test.lib文件和 Interface_Test.h

   

// 以 C++ 编译
#ifdef __cplusplus
extern "C" {
#endifvoid* Test1 = NULL;
int ver = 0;
void UserFunc( void )
{IF_NewHandle(Test1) ;ver = IF_GetLibVer(Test1)
}#ifdef __cplusplus}
#endif

这篇关于C++ 类打包LIB方法,创建 C 接口函数方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/555578

相关文章

Python清空Word段落样式的三种方法

《Python清空Word段落样式的三种方法》:本文主要介绍如何用python-docx库清空Word段落样式,提供三种方法:设置为Normal样式、清除直接格式、创建新Normal样式,注意需重... 目录方法一:直接设置段落样式为"Normal"方法二:清除所有直接格式设置方法三:创建新的Normal样

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么