Python类型使用winmode加载DLL < >我安装了一个C++ API应用程序,它把几个DLL( A.DLL < /代码>和 B.DLL >代码> >放入我的程序文件夹中。code>A.DLL依赖于B.DLL
如果从安装文件夹(如Python类型使用winmode加载DLL < >我安装了一个C++ API应用程序,它把几个DLL( A.DLL < /代码>和 B.DLL >代码> >放入我的程序文件夹中。code>A.DLL依赖于B.DLL,python,ctypes,Python,Ctypes,如果从安装文件夹(如C:\Programs Files\XXX-API\A.DLL 如果我将文件夹移动到另一个位置C:\TEMP\,Python加载程序会抱怨找不到B.DLL 我正在调查,看起来它会解决问题。winmode似乎从中的参数中获取一个整数 例如: 加载\u库\u搜索\u DLL\u加载\u目录 0x00000100 使用LOAD\u LIBRARY\u SEARCH\u DLL\u LOAD\u DIR,将0x00000100作为256传递到winmode?ctype将投诉找不到B.
C:\Programs Files\XXX-API\A.DLL
如果我将文件夹移动到另一个位置C:\TEMP\
,Python加载程序会抱怨找不到B.DLL
我正在调查,看起来它会解决问题。winmode
似乎从中的参数中获取一个整数
例如:
加载\u库\u搜索\u DLL\u加载\u目录
0x00000100
使用LOAD\u LIBRARY\u SEARCH\u DLL\u LOAD\u DIR
,将0x00000100
作为256
传递到winmode
?ctype将投诉找不到B.DLL
,我不确定缺少什么,感谢您的任何意见,谢谢
ctypes.WinDLL(path_to_A_DLL , winmode = 256 )
备选案文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)
您使用的是什么Python版本?您所说的“将
0x00000002
作为256
传递到winmode
”是什么意思(因为它毫无意义)?同时发布stacktrace。你的最后一个代码片段不管用吗?@CristiFati谢谢,我正在使用python3.8。那是个打字错误。应该是0x00000100
(256
在12月份)。就是找不到B.DLL
。我想。首先,你怎么知道找不到的是B.dll?请添加堆栈跟踪。第二,看一看。看起来不一样,但我认为是同一个问题(因此我可以将其标记为重复)。让我知道它是如何运作的…上一个版本对我来说很有用。据我所知,0x8对应于带有搜索路径()的加载路径,但在nt
模块中不可用。