Boost.Python 示例,Windows 7 x64,“ImportError: DLL 加载失败:找不到指定模块。”

5 投票
3 回答
5446 浏览
提问于 2025-04-17 06:13

我花了两天时间尝试运行Boost.Python的示例,但遇到了“导入错误:DLL加载失败:找不到指定的模块”的问题。这是在尝试加载用bjam编译的pyd模块时发生的。我使用的是Windows 7 x64,Python 2.7 x64和Boost 1.47。我在StackOverflow和其他网站上查看了不同的解决方案,包括重新安装(32位和64位的Python,预编译的Boost),手动构建Boost的库,使用依赖检查工具查看DLL等等,但都没有成功。我注册来分享一个在这里有效的解决方案,希望能帮助到同样遇到这个错误的人;)

3 个回答

0

我的解决办法是下载微软的 Visual C++ 2015 运行库。你可以通过这个链接找到它:https://www.microsoft.com/en-us/download/details.aspx?id=48145

6

有两个解决办法,不需要使用注册表编辑器(regedit)

  1. 在构建你的dll文件时,添加 BOOST_PYTHON_STATIC_LIB 这个宏。这样可以让boost.python静态链接到你的dll文件,而不是在运行时动态加载。
  2. 把boost.python的dll文件添加到系统的PATH环境变量中,或者把它复制到和你的dll文件同一个文件夹里。
2

这个问题出在KB2264107的Windows更新上(http://support.microsoft.com/kb/2264107),它对DLL文件的搜索方式进行了“干扰”(这是一个安全修复)。通过把注册表中的这个值:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]里的CWDIllegalInDllSearch设置为0,就可以正确加载DLL文件和导入.pyd模块。这种情况在其他Windows版本上也可能会发生。

撰写回答