在WinXP和VisualStudio 2005下,boost.python出现“DLL加载失败”
我在WinXP-32上导入boost-python模块时遇到了问题。
我使用的是python 2.6.6,boost.python 1.41的预编译库(由boostpro提供)和VC++8(VisualStudio 2005)。
在编译下面的代码后,我尝试从python命令行导入生成的pyHELLO.pyd文件,但总是收到以下错误信息:
"ImportError: DLL加载失败:这个应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决这个问题。"
我重新安装了python,并尝试了其他版本的boost,但都没有帮助。
我在尝试导入模块的目录中有相应的boost dll文件。
同样的代码在Win7的VC++9下可以正常工作。
以下是代码:
int sayHello() {
cout << "Hello !" << endl;
}
BOOST_PYTHON_MODULE(pyBoostTest)
{
def("sayHello", sayHello);
}
任何帮助都非常感谢。
1 个回答
0
解决方案:
我发现我的电脑上缺少了一个正确版本的 MSVC80CRT dll,而这个文件是 boost.python dll 需要的。我从微软下载了相应的重分发包(redist package)并安装了它。现在一切正常了。
依赖检查工具(dependencywalker)没有显示这个 dll 有缺失的依赖项。后来我了解了清单(manifests)和 SxS(侧面-by-侧面)后,发现正确的 dll 版本在清单中有说明,而这个清单是嵌入在 dll 头部里的。
如果你在 Visual Studio 中打开一个 dll 文件,可以查看到相关信息。然后你可以检查一下 c:\windows\winsxs 文件夹里是否有这个 dll 版本。如果没有,你可以通过从微软下载相应的“重分发”包来获取缺失的 dll。只需搜索一下 dll 的版本即可。
感谢 David 提供关于清单的提示。