潍坊网站建设自助建站平台,做网站推广,郑州小程序开发外包公司,圆古制作公司官网项目场景#xff1a;
KinectDK相机SDK封装Dll
问题描述
在 C 环境下#xff0c;使用 GPU 模式#xff08;默认#xff09;调用 k4abt_tracker_create 函数正常工作。但是#xff0c;在 Python 环境下#xff0c;通过 ctypes 调用相同的 DLL#xff0c;当使用 GPU 模式…项目场景
KinectDK相机SDK封装Dll
问题描述
在 C 环境下使用 GPU 模式默认调用 k4abt_tracker_create 函数正常工作。但是在 Python 环境下通过 ctypes 调用相同的 DLL当使用 GPU 模式时出现异常函数调用失败。当将处理模式改为 CPU 模式时Python 环境下也能够正常运行。 解决方案
不仅仅显示加载自己封装的dll文件还要显示加载directml.dll 原因分析
C 环境下的 DLL 加载
在 C 程序中当您加载您的 DLLKinectTrackingDKDLL.dll时Windows 系统会自动解析并加载其所有依赖项包括 DirectML.dll。
这是因为 C 编译器和链接器处理了依赖关系并且在加载您的 DLL 时系统按照默认的 DLL 搜索顺序查找依赖项。Python 环境下的 DLL 加载
在 Python 中使用 ctypes.CDLL 加载 DLL 时DLL 的依赖项可能不会被自动解析和加载特别是在依赖项不在系统默认搜索路径中的情况下。
这是因为 Python 的 ctypes 加载机制与 C 程序的加载机制存在差异可能导致依赖项未被正确找到。