我在 WinXP-32 上导入 boost-python 模块时遇到问题。 我正在使用 python 2.6.6,boostpro 和 VC++8 (VisualStudio 2005) 的 boost.python 1.41 预编译库。
在编译下面的这段代码后,我尝试从 python 命令行导入生成的 pyHELLO.pyd 并总是得到:
"ImportError: DLL load failed: This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem."
我重新安装了 python 并尝试了其他增强版本。但这些都没有帮助。
我在尝试导入模块的目录中有相应的 boost dll。
同样的代码可以在 Win7 下使用 VC++9。
代码如下:
int sayHello() {
cout << "Hello !" << endl;
}
BOOST_PYTHON_MODULE(pyBoostTest)
{
def("sayHello", sayHello);
}
非常感谢任何帮助。
最佳答案
已解决:
我的机器上缺少 boost.python dll 所依赖的 MSVC80CRT dll 的正确版本。我从MS下载了相应的redist包并安装了。现在可以了。
dependencywalker 没有显示此 dll 缺少依赖项。 阅读 list 和 SxS 后,我发现说明了正确的 dll 版本 在本身嵌入在 dll header 中的 list 中。
如果您在 Visual Studio 中打开一个 dll,您可以阅读其中的信息。然后你检查是否 dll 版本存在于 c:\windows\winsxs 文件夹中。如果没有,你可以找回丢失的 dll 通过从 MS 下载相应的“redist”包。只需搜索 dll 版本即可。
感谢 David 在 list 上给出的提示。
关于python - WinXP 上的 boost.python "DLL load failed",VisualStudio 2005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6492602/