2011-06-27 81 views
3

在WinXP-32上導入boost-python模塊時出現問題。 我使用python 2.6.6,boostpro和VC++ 8(VisualStudio 2005)的boost.python 1.41預編譯庫。boost.python在WinXP,VisualStudio 2005上「DLL加載失敗」

編譯一塊下面的代碼後,我試圖從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); 
} 

任何幫助高度讚賞。

+2

您的Python .exe是否具有指定MSVCRT的SxS詳細信息的應用程序清單? –

+0

你的意思是提升python 1.41? –

+0

1.我是Windows新手,不知道關於清單的事情,但依賴walker顯示python.exe依賴於位於winsxs文件夾中的MSVCR90.dll(如果這就是你的意思) 2.是的,它的增強蟒蛇1.41 –

回答

0

解決:

正確版本上Boost.Python的DLL取決於失蹤我的機器上的MSVC80CRT DLL的。我從MS下載了相應的redist軟件包並安裝了它。現在它可以工作。

dependencywalker沒有顯示該DLL的缺失依賴項。 在閱讀清單和SxS後,我發現在清單中聲明瞭正確的dll版本 ,該清單本身嵌入在dll頭文件中。

如果你在Visual Studio中打開一個DLL,你可以閱讀這些信息。然後你檢查在c:\ windows \ winsxs文件夾中是否存在 dll版本。如果沒有,您可以通過從MS下載相應的「redist」軟件包來檢索丟失的 dll。只需搜索dll版本。

感謝大衛提供清單的暗示。