Python:C+的包装器+;需要访问.dll文件 我用C++编写了一个用Syg编写的SDK Python包装器,并在Windows 7中使用微软Visual Studio 2010构建。

Python:C+的包装器+;需要访问.dll文件 我用C++编写了一个用Syg编写的SDK Python包装器,并在Windows 7中使用微软Visual Studio 2010构建。,python,c++,windows,dll,swig,Python,C++,Windows,Dll,Swig,这是一个成功,生成了module.py和_module.pyd。然而,这个包装器严重依赖于位于PythonXY文件夹外的SDK文件夹中的几个.dll文件 在我将module.py和module.pyd移动到PythonXY/Lib/site packages/中,并尝试运行导入模块后,出现以下错误: ImportError: DLL load failed: The specified module could not be found. 然后,我尝试使用Python模块os中的os.chdi

这是一个成功,生成了module.py和_module.pyd。然而,这个包装器严重依赖于位于PythonXY文件夹外的SDK文件夹中的几个.dll文件

在我将module.py和module.pyd移动到PythonXY/Lib/site packages/中,并尝试运行导入模块后,出现以下错误:

ImportError: DLL load failed: The specified module could not be found.
然后,我尝试使用Python模块os中的os.chdir()方法将Python工作目录更改为.dll文件所在的目录。这一次,运行导入模块输出没有错误。我继续访问包装的C++类和函数,它们工作得很好。 我的问题是:

  • 如何“链接”包含.dll文件的路径,以便在使用模块时不必更改工作目录
  • 除了Python源文件中的Python默认工作目录之外,是否还有其他附加工作目录的方法?(即不是从Windows上的路径配置)
  • 是否有任何方法可以将包装器与那些.dll文件动态链接?也就是说,假设文件被复制到另一台机器上,.dll文件存储在不同的绝对路径目录下,导入模块仍然可以工作
关键是我想使这个包装器尽可能可移植到多个Windows机器上

谢谢。

我找到了一个让module.py查找\u module.pyd的解决方案

基本上,创建一个名为module.pth的新文件,并将其保存在与module.py相同的目录中。在本例中,目录是PythonXY/Lib/site-packages/

假设您将_module.pyd放在名为_modulelib(PythonXY/Lib/site packages/_modulelib/)的目录中,那么module.pth的内容应该如下所示:

_modulelib

你试过把它放在Windows会查找DLL的地方吗?我如何检查Windows会查找DLL的目录?