本文主要是介绍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 接口函数方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!