Boost Python没有找到dll文件

时间:2017-08-14 03:38:18

标签: python c++ python-2.7 visual-studio-2017 boost-python

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

但是,现在在visual studio中,在向链接器添加include和library路径之后,我无法使用一个小的测试程序。

尝试运行以下代码行时:

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

我收到以下错误

  

程序无法启动,因为 boost_python-vc141-1_65.dll 缺失....

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

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

最新的稳定版本如此1.64与beta 1.65具有相同的问题。使用之前的版本1.61,我甚至无法构建Boost.Python。

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

1 个答案:

答案 0 :(得分:2)

在Windows上没有/ usr / shared目录,因此boost build脚本无法为每个人安装dll库。所以你应该自己做这个工作。

您的dll文件必须与您的exe文件位于同一目录中。编译boost时,它在boost输出目录中创建了dll库(搜索此文件)。因此,您必须通过自定义构建步骤等将此* .dll文件复制到输出目录(其中C ++编译器/链接器创建您的* .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