在WinXP和VisualStudio 2005下,boost.python出现“DLL加载失败”

3 投票
1 回答
1090 浏览
提问于 2025-04-16 20:22

我在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 提供关于清单的提示。

撰写回答