Python 如何确定特定win32 api调用所需的windows库?

Python 如何确定特定win32 api调用所需的windows库?,python,windows,winapi,py2exe,Python,Windows,Winapi,Py2exe,我正在使用几个windows api模块,如win32wnet、win32file、win32con,以及其他一些模块,但其中只有一些方法 我正在用py2exe(bundle_files==3)打包我的应用程序,如果它们在其他windows平台上运行的话,它就会被击中 我想: 1) 打包所有必需的库,并且只打包适当的库。如果可能的话,我不想依赖已经安装在操作系统上的东西 或: 2) 我想编写清单,将我的应用程序连接到现有DLL的适当版本。(如果打包dll不合法) python在运行时提供的错误很

我正在使用几个windows api模块,如
win32wnet
win32file
win32con
,以及其他一些模块,但其中只有一些方法

我正在用py2exe(bundle_files==3)打包我的应用程序,如果它们在其他windows平台上运行的话,它就会被击中

我想: 1) 打包所有必需的库,并且只打包适当的库。如果可能的话,我不想依赖已经安装在操作系统上的东西

或: 2) 我想编写清单,将我的应用程序连接到现有DLL的适当版本。(如果打包dll不合法)

python在运行时提供的错误很模糊:

ImportError: DLL load failed: The specified procedure could not be found.
文档(例如:
帮助(win32wnet)
)似乎没有多大用处


如何确定我的应用程序需要哪些本机windows库?

我想您可能会发现,Microsoft不允许将核心windows DLL作为应用程序的一部分提供


你应该编写你的软件来处理机器上可用的东西,除非它像comctrls32一样有几个版本。

我想你可能会发现,微软不允许将核心windows DLL作为应用程序的一部分提供



您应该编写软件来处理计算机上可用的内容,除非它类似于具有多个版本的comctrls32。

在.pyd(本例中为win32wnet)上使用a来发现是否有任何.dll依赖项被破坏。然后要么1)在包中包含清单(如果您知道本机库在哪里),要么2)在包中捆绑.dll(如果MS允许)

在.pyd(本例中为win32wnet)上使用,以发现是否有任何.dll依赖项被破坏。然后要么1)在包中包含清单(如果您知道本机库在哪里),要么2)在包中捆绑.dll(如果MS允许)

好的一点。但它并没有回答这个问题。寻找一种确定.pyd'sIt的依赖路径的方法解决了这个问题,但没有解决它。我:“医生,当我这样做的时候很痛。”医生:“不要那样做。”@Toby Allen我知道LIB可以在机器上使用。但我得到了一个重要的警告,因为pywin32显然找不到它们,或者正在找到一个SxS版本,而该版本pywin32并不打算使用该版本。这一点很好。但它并没有回答这个问题。寻找一种确定.pyd'sIt的依赖路径的方法解决了这个问题,但没有解决它。我:“医生,当我这样做的时候很痛。”医生:“不要那样做。”@Toby Allen我知道LIB可以在机器上使用。但是我得到了一个重要的警告,因为pywin32显然找不到它们,或者正在找到一个SxS版本,该版本pywin32不打算使用。你想调用哪个不在DLL中的函数?@Toby Allen
win32wnet.wnetadConnection2
就是其中之一。我还有一长串其他人。我想要(ed)一个通用的解决方案来查找这些函数所使用的lib(我已经找到了一个解决方案——请看我的答案),你想调用哪些不在DLL中的函数?@Toby Allen
win32wnet.WNetAddConnection2
就是其中之一。我还有一长串其他人。我想要(ed)一个通用的解决方案来查找这些函数所使用的lib(我已经找到了一个解决方案——请看我的答案),即使MS允许,也不能绑定DLL。它不起作用。比如说,你不能把vista用户32放在xp上。它不起作用。加载基本的win32 DLL不需要任何清单。“您实际的问题不是您所想的那样。@David Heffernan那么为什么py2exe将.dll捆绑在一个包中?我认为它捆绑了Python DLL。比如python27.dll和C运行时所需的任何dll。还有任何需要的PYDs等等。它真的不应该捆绑Windows DLL。“这是行不通的。”戴维德费弗南说,但确实行。例如,在本例中,py2exe会自动将mpr.dll与包绑定在一起。我的观点是MPR也依赖于C++运行时而没有找到它。(由于SxS?)一旦我为mpr.dll编写了清单,一切似乎都恢复了正常。py2exe不应该这样做。但我不知道为什么。mpr.dll不依赖于C运行时。这是一个系统组件,它们不依赖于MSVC运行时。即使MS允许,也无法绑定DLL。它不起作用。比如说,你不能把vista用户32放在xp上。它不起作用。加载基本的win32 DLL不需要任何清单。“您实际的问题不是您所想的那样。@David Heffernan那么为什么py2exe将.dll捆绑在一个包中?我认为它捆绑了Python DLL。比如python27.dll和C运行时所需的任何dll。还有任何需要的PYDs等等。它真的不应该捆绑Windows DLL。“这是行不通的。”戴维德费弗南说,但确实行。例如,在本例中,py2exe会自动将mpr.dll与包绑定在一起。我的观点是MPR也依赖于C++运行时而没有找到它。(由于SxS?)一旦我为mpr.dll编写了清单,一切似乎都恢复了正常。py2exe不应该这样做。但我不知道为什么。mpr.dll不依赖于C运行时。这是一个系统组件,它们不依赖于MSVC运行时。