当前位置: 首页 > news >正文

KinectDK相机SDK封装Dll出现k4abt_tracker_create()创建追踪器失败的问题

项目场景:

KinectDK相机SDK封装Dll

问题描述

在 C++ 环境下,使用 GPU 模式(默认)调用 k4abt_tracker_create 函数正常工作。但是,在 Python 环境下,通过 ctypes 调用相同的 DLL,当使用 GPU 模式时,出现异常,函数调用失败。当将处理模式改为 CPU 模式时,Python 环境下也能够正常运行。


解决方案:

不仅仅显示加载自己封装的dll文件,还要显示加载directml.dll


原因分析:

  • C++ 环境下的 DLL 加载:
在 C++ 程序中,当您加载您的 DLL(KinectTrackingDKDLL.dll)时,Windows 系统会自动解析并加载其所有依赖项,包括 DirectML.dll。
这是因为 C++ 编译器和链接器处理了依赖关系,并且在加载您的 DLL 时,系统按照默认的 DLL 搜索顺序查找依赖项。
  • Python 环境下的 DLL 加载:
在 Python 中使用 ctypes.CDLL 加载 DLL 时,DLL 的依赖项可能不会被自动解析和加载,特别是在依赖项不在系统默认搜索路径中的情况下。
这是因为 Python 的 ctypes 加载机制与 C++ 程序的加载机制存在差异,可能导致依赖项未被正确找到。
http://www.lryc.cn/news/465160.html

相关文章:

  • Linux 命令—— ping、telnet、curl、wget(网络连接相关命令)
  • 高速缓冲存储器Cache是如何工作的、主要功能、高速缓冲存储器Cache和主存有哪些区别
  • 极简版Java敏感词检测SDK
  • H3C路由器交换机操作系统介绍
  • 【项目案例】-音乐播放器-Android前端实现-Java后端实现
  • EasyX图形库的安装
  • 数据结构 - 队列
  • 基于springboot美食推荐商城的设计与实现
  • React开发一个WebSocket
  • Oracle DECODE 丢失时间精度的原因与解决方案
  • 如何用示波器检测次级点火系统(一)
  • 基于SpringBoot+Vue+uniapp的涪陵区特色农产品交易系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • bmp怎么转换为jpg?快速批量将bmp转换为jpg
  • centos8配置java环境变量jdk8u422-b05
  • 基于SSM的校园拓展活动管理系统
  • Python随机森林算法详解与案例实现
  • 提示词高级阶段学习day2.1-在提示词编写中对{}的使用教程
  • 2024年,每一个大模型都躲不过容嬷嬷和紫薇
  • SpringBoot之RedisTemplate基本配置
  • SparseRCNN 模型,用于目标检测任务
  • 【AIGC】第一性原理下的ChatGPT提示词Prompt设计:系统信息与用户信息的深度融合
  • DeepSpeed性能调优与常见问题解决方案
  • 【GESP】C++一级练习BCQM3052,鸡兔同笼
  • Android面试之5个性能优化相关的深度面试题
  • R语言机器学习算法实战系列(六)K-邻近算法 (K-Nearest Neighbors)
  • FPGA图像处理之构建3×3矩阵
  • 【Linux】进程间通信(匿名管道)
  • memset()函数的实现
  • STM32CUBEIDE FreeRTOS操作教程(七):queue队列
  • 类型转换与字符串操作:数据的灵活变形!