Python类型使用winmode加载DLL

2024-04-19 18:09:18 发布

您现在位置:Python中文网/ 问答频道 /正文

< >我安装了一个C++ API应用程序,它将两个DLL(^ {CD1>}和^ {CD2>})放入我的程序文件夹中。{}依赖于B.DLL

我可以使用ctypes.WinDLL从安装文件夹C:\Programs Files\XXX-API\A.DLL成功加载它们

而如果我将文件夹移动到另一个地方C:\TEMP\,Python加载将抱怨它找不到B.DLL

我正在研究winmode,看起来它会解决问题。winmode似乎从MS reference中的参数中获取一个整数

例如:

LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR

0x00000100

要使用LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR,将0x00000100作为256传递给winmode ?ctype将投诉找不到B.DLL,我不确定缺少什么,感谢您的任何意见,谢谢

ctypes.WinDLL(path_to_A_DLL , winmode = 256 )

Tags: 程序文件夹api应用程序searchdirlibraryload
1条回答
网友
1楼 · 发布于 2024-04-19 18:09:18

备选案文1:

import nt
_func1 = ctypes.WinDLL(lib_name, winmode = nt._LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR)

备选案文2:

_func1 = ctypes.WinDLL(lib_name, winmode = 0x100)

两者都应该起作用

但我整天都在尝试os.add_dll_directory()。最后转到

_func1 = ctypes.WinDLL(absolute_lib_path, winmode = 0x8)

相关问题 更多 >