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
)