Boost Python 找不到 dll 文件

Boost Python not finding dll file

在 Visual Studio 上尝试安装 Boost Python 时,我得到的结果很少。我能够创建 Boost.Python 库,并且还创建了 boost_python...lib 文件,这让我花了很长时间才弄清楚如何实现这一点。

但是,现在在 visual studio 中,在将包含和库路径添加到链接器后,我无法让一个小的测试程序工作。

尝试运行以下代码行时:

Py_Initialize();
using namespace boost::python;
object main_module((handle<>(borrowed(PyImport_AddModule("__main__")))));

我收到以下错误

The program could not start because boost_python-vc141-1_65.dll is missing....

当我查看库所在的 boost 文件夹(在 stage 文件夹中)时,我可以清楚地看到这个文件,并且我已经将程序链接到这个文件夹。

我尝试过各种不同的 Boost 版本。

最新的稳定版本 so 1.64 与 beta 1.65 存在相同的问题。对于之前的版本 1.61,我什至无法构建 Boost.Python。

我也尝试了不同的 Python 版本,3.6 和现在的 2.7。我已经卸载了所有其他版本的 Python,因此 2.7 版本是唯一的。我还确保在系统变量中设置了 PYTHONHOME 和 PYTHONPATH。 ? 我是否遗漏了让这个 Boost Python 库正常工作的重要信息?如果需要任何其他信息,请询问,我会添加它,但由于我不熟悉提升和一般链接,我不确定哪些信息是相关的。

在Windows上没有/usr/shared目录,所以boost构建脚本不能为每个人安装一个dll库。所以你应该自己完成这项工作。

您的 dll 文件必须与您的 exe 文件位于同一目录中。编译 boost 时,它会在 boost 输出目录(搜索此文件)中创建 dll 库。因此,您必须通过自定义构建步骤或其他方式将此 *.dll 文件复制到您的输出目录(C++ compiler/linker 在其中创建您的 *.exe)。

如果启用了SafeDllSearchMode,搜索顺序如下:

  • 应用程序加载的目录。
  • 系统目录。使用GetSystemDirectory函数获取该目录的路径。
  • 16位系统目录。没有获取这个目录路径的函数,但是搜索到了。
  • Windows目录。使用 GetWindowsDirectory 函数获取此目录的路径。
  • 当前目录。
  • PATH 环境变量中列出的目录。请注意,这不包括每个应用程序的路径 由 App Paths 注册表项指定。 App Paths 键不是 在计算 DLL 搜索路径时使用。

如果禁用SafeDllSearchMode,搜索顺序如下:

  • 应用程序加载的目录。
  • 当前目录。
  • 系统目录。使用GetSystemDirectory函数获取该目录的路径。
  • 16位系统目录。没有获取这个目录路径的函数,但是搜索到了。
  • Windows目录。使用 GetWindowsDirectory 函数获取此目录的路径。
  • PATH 环境变量中列出的目录。请注意,这不包括
  • 指定的每个应用程序路径
  • App Paths 注册表项。 App Paths 键不使用时 计算 DLL 搜索路径。

Taken from here