3.9 示例Demo运行步骤 ==================== 3.9.1 编译demo -------------- 在本地PC端,进入到sdk文件中 ``` cd demo/zsl-1/cpp mkdir build cd build cmake .. make -j6 ``` 3.9.2 运行sdk demo ------------------ 运行Python demo ``` cd demo/zsl-1/python/examples python highlevel_demo_Interactive.py or python lowlevel_demo.py ``` 运行C++ demo ``` cd demo/zsl-1/cpp/build ./highlevel_demo or ./lowlevel_demo ``` 3.9.3 调用sdk ------------- - 基于Python调用sdk ``` import os import platform import sys arch = platform.machine().replace('amd64', 'x86_64').replace('arm64', 'aarch64') lib_path = os.path.abspath(f'{os.path.dirname(__file__)}/../../../../lib/zsl-1/{arch}') sys.path.insert(0, lib_path) import mc_sdk_zsl_1_py ``` - 基于cmake调用sdk ``` cmake_minimum_required(VERSION 3.16) project(test) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD 17) # 定义架构变量(默认未知) set(ARCH "unknown") # 识别 x86_64 架构(兼容不同系统的返回值) if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64|amd64") set(ARCH "x86_64") # 识别 arm64/aarch64 架构 elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64|arm64") set(ARCH "aarch64") else() message(FATAL_ERROR "不支持的架构: ${CMAKE_HOST_SYSTEM_PROCESSOR},请检查 lib 目录下是否有对应架构的库") endif() message(STATUS "检测到系统架构: ${ARCH}") # 库文件路径:上层目录 -> lib/zsl-1/架构目录 set(LIB_PATH "${CMAKE_SOURCE_DIR}/../../../lib/zsl-1/${ARCH}") message(STATUS "将链接的库路径: ${LIB_PATH}") # 查找对应架构的库(库文件名为 libmc_sdk_zsl_1_${ARCH}.so) find_library(MC_SDK_LIB NAMES "mc_sdk_zsl_1_${ARCH}" # 库名(不含前缀lib和后缀.so) PATHS ${LIB_PATH} NO_DEFAULT_PATH # 只在指定路径查找,避免找到其他版本 REQUIRED ) # 验证库是否找到 if(NOT MC_SDK_LIB) message(FATAL_ERROR "在 ${LIB_PATH} 中未找到库文件 mc_sdk_zsl_1_${ARCH}.so,请检查库是否存在") else() message(STATUS "找到库文件: ${MC_SDK_LIB}") endif() # highlevel示例 add_executable(highlevel_demo highlevel_demo.cpp) target_link_libraries(highlevel_demo ${MC_SDK_LIB}) target_include_directories(highlevel_demo PRIVATE ${CMAKE_SOURCE_DIR}/../../../include # 公共头文件 ${CMAKE_SOURCE_DIR}/../../../include/zsl-1 # ZSL-1专属头文件 ) # lowlevel示例 add_executable(lowlevel_demo lowlevel_demo.cpp) target_link_libraries(lowlevel_demo ${MC_SDK_LIB}) target_include_directories(lowlevel_demo PRIVATE ${CMAKE_SOURCE_DIR}/../../../include ${CMAKE_SOURCE_DIR}/../../../include/zsl-1 ) ```