Boost.Python 示例,Windows 7 x64,“ImportError: DLL 加载失败:找不到指定模块。”
我花了两天时间尝试运行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)
- 在构建你的dll文件时,添加
BOOST_PYTHON_STATIC_LIB
这个宏。这样可以让boost.python静态链接到你的dll文件,而不是在运行时动态加载。 - 把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版本上也可能会发生。