# sdk_dev_guide
**Repository Path**: hzwhcj/sdk_dev_guide
## Basic Information
- **Project Name**: sdk_dev_guide
- **Description**: 人人都懂SDK开发
介绍SDK开发的方法论和最佳实践。
- **Primary Language**: C++
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2025-06-27
- **Last Updated**: 2025-06-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 1. 项目介绍
《[SDK开发指南](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzAwNjE0NzcwMQ==&action=getalbum&album_id=3797853885046423560#wechat_redirect)》一书的源码仓库。
## 2. 源码仓库
| 地区 | 代码托管平台 | 源码仓库地址 |
| --- | --- | --- |
| 中国大陆 | Gitee | [https://gitee.com/spencer_luo/sdk_dev_guide](https://gitee.com/spencer_luo/sdk_dev_guide) |
| 国际站点 | Github | [https://github.com/spencer-luo/sdk_dev_guide](https://github.com/spencer-luo/sdk_dev_guide) |
## 3. 章节对应关系
| 章节序号 | 章节名称 | 源码的目录 |
|---|---|---|
| 04 | [接口注释与接口文档](https://mp.weixin.qq.com/s/lK3vNgkQRCSMtYsODAKR3Q) | doxygen |
| 05 | [字符集与字符编码](https://mp.weixin.qq.com/s/nvjHA-B9mWxVbCPHn99U1w) | charset_encoding |
| 06 | [多字节字符与宽字节字符](https://mp.weixin.qq.com/s/kG4-JD6XjXd7HxTr2x9Frw) | char_wchar |
| 07 | [静态库、动态库与运行库](https://mp.weixin.qq.com/s/UtsoqtTGibx_1ZhKUD-GGA) | crt |
| 10 | [宏定义隔离平台差异](https://mp.weixin.qq.com/s/v32HDTPcf6icOB6zHp1xLw) | macro_definition |
| 11 | [基础数据类型的定义](https://mp.weixin.qq.com/s/qFOwIJdlfupDpukF2yAcIA) | basic_data_type |
| 13 | [头文件包含的差异](https://mp.weixin.qq.com/s/OENiQPybWw5l8voxWu2j1g) | include |
| 14 | [导出接口的定义](https://mp.weixin.qq.com/s/Y6i6TDY_PnG7Q3ZtmTafXA) | export_interface |
| 15 | [字节序大端与小端](https://mp.weixin.qq.com/s/--RRzZjhk1rl-eR9Aj__jQ) | big_little_endian |
| 16 | [内存和资源管理](https://mp.weixin.qq.com/s/xiGXJH883_RWEqYXBIbeJQ) | mem_mgr |
| 19 | [CMake实现跨平台构建](https://mp.weixin.qq.com/s/ZjM6PXVbkbA8j5dfxN5HMw) | cmake_iterator |
| 22 | [C++接口设计和代码实现](https://mp.weixin.qq.com/s/aCDm4GMpUMvmBFHYXPqC0Q) | whiteboard\whiteboard_lib\src\core
whiteboard\whiteboard_demo\cpp_demo |
| 23 | [C语言接口设计和代码实现](https://mp.weixin.qq.com/s/e2da8GDtDUH9BygftyQRTw) | whiteboard\whiteboard_lib\src\core
whiteboard\whiteboard_demo\c_demo |
| 24 | [Python接口设计和代码实现](https://mp.weixin.qq.com/s/rEgz7oQMhSrxP0TomAzDNQ) | python_demo
whiteboard\whiteboard_lib\src\cython
whiteboard\whiteboard_demo\py_demo |
| 25 | [JavaScript接口设计和代码实现](https://mp.weixin.qq.com/s/DjYtBMm2UzpeCnB_iibaUg) | emscripten_demo
whiteboard\whiteboard_lib\src\javascript
whiteboard\whiteboard_demo\js_demo |
| 26 | [Java接口设计和代码实现](https://mp.weixin.qq.com/s/kWH55PigjgscqoHIXjiKEw) | jni_demo
whiteboard\whiteboard_lib\src\java
whiteboard\whiteboard_demo\java_demo |
| 27 | [Android接口设计和代码实现](https://mp.weixin.qq.com/s/GnLFLm4KGMnloOrW1fyT7w) | android_demo
whiteboard\whiteboard_lib\src\java
whiteboard\whiteboard_demo\apk_demo |
| 28 | [iOS接口设计和代码实现](https://mp.weixin.qq.com/s/wQupxMOxrRbhHmfPm59hGA) | ios_demo
whiteboard\whiteboard_lib\src\xcode
whiteboard\whiteboard_demo\ipa_demo |
## 4. 电子白板项目
电子白板项目(`whiteboard`)是“**实战篇: 跨语言的混合编程**”系列文章的示例项目,里面包含C/C++与Python、JavaScript、Java、Kotlin、Swift、Objective-C等多种不同语言的混合编程案例,项目的目录结构如下。
```bash
./whiteboard
├── output # 编译结果输出目录
│ ├── demo # Demo的可执行文件
│ ├── include # 头文件
│ └── lib # 编译出来的库
├── whiteboard_demo # 使用SDK的示例Demo
│ ├── apk_demo # Android版本的Demo
│ ├── c_demo # C语言版本的Demo
│ ├── cpp_demo # C++版本的Demo
│ ├── ipa_demo # iOS版本的Demo
│ ├── java_demo # Java版本的Demo
│ ├── js_demo # JavaScript版本的Demo
│ └── py_demo # Python版本的Demo
└── whiteboard_lib # 电子白板的SDK代码
├── docs # SDK的文档
└── src # SDK的源码
├── core # SDK的核心功能模块
│ ├── CMakeLists.txt # core模块的CMake配置
│ ├── interface # 接口定义
│ │ ├── c # C语言版本的接口
│ │ ├── common # 通用数据类型定义
│ │ └── cpp # C++版本的接口
│ └── whiteboard # 电子白板SDK的内部实现
├── cython # Cython版本的接口
| ├── whiteboard.pyx # Cython的接口定义
| └── setup.py # Cython编译和打包、安装的配置脚本
├── java # Java版本的接口
| ├── com/sunlogging/whiteboard # Java代码
| ├── jni # 符合JNI规范的C++代码
| └── CMakeLists.txt # JNI模块的CMake配置
├── javascript # JavaScript版本的接口
| └── CMakeLists.txt # JavaScript模块的CMake配置
└── xcode # iOS版本的接口
├── ios.toolchain.cmake # cmake脚本,用于支持苹果系列平台的交叉编译
├── CMakeLists.txt # CMake配置文件
└── build.sh # 构建脚本
```