背景:c++自定义创建dll,依赖于gda201.dll(如何创建dll的部分略),并提供给python调用
Objdll = ctypes.cdll.LoadLibrary('D:\\ge\\testDLL\\x64\\Debug\\testDLL.dll') # 此处建议绝对路径
很显然,错误的原因在于testDLL.dll依赖于gda201.dll,而Python 进程没有找到
单纯将这两个dll文件放在同一目录下是没有作用的,因为Python进程起始路径并不是testDLL.dll的目录。
网上的建议是在系统环境的 path 里面里面加入 dll 的目录,或者把这些 dll 都一起复制到 Python.exe 所在的目录。但是我觉得不妥,虽然暂时解决了问题,但是若是将testDLL.dll交给其他环境使用时一样会出问题。
解决方案其实非常简单,修改当前的工作路径即可。
解决方案:
增加语句os.chdir('D:\\ge\\testDLL\\x64\\Debug\\')
OSError: [WinError 126] 找不到指定的模块
我这里是缺少动态库:
libx264-155.dll
在 Python 里面使用 ctypes 载入 dll 时,如果这个 dll 还依赖于其它的 dll 的话,这些相关的 dll 也得要能被 Python 的进程访问到。如果访问不到就会报以下错误:
>>> import cty