2011-11-13 60 views
5

我已經花了最近2天嘗試從Boost.Python啓動示例,並嘗試加載已編譯(使用bjam)pyd模塊時出現「導入錯誤:DLL加載失敗:找不到指定的模塊」錯誤。我使用的是Windows 7 x64,Python 2.7 x64和Boost 1.47。我在StackOverflow和其他網站上跟進了不同的答案。全新安裝(Python 32和64位,Boost預編譯),手動Boost的庫構建,DLL依賴關係walker等等,沒有運氣。我註冊分享解決方案,在這裏工作,我希望可以幫助某人,掙扎着同樣的錯誤;)Boost.Python示例,Windows 7 x64,「ImportError:DLL加載失敗:指定的模塊找不到。」

+0

的問題是與[KB2264107的Windows更新](http://support.microsoft.com/kb/2264107),「修復」DLL搜索例程(安全修復程序)。設置註冊表值[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager]:CWDIllegalInDllSearch爲0,允許正確加載DLL文件並正確導入.pyd模塊。這也可能發生在其他Windows版本上。 – stx

+0

歡迎來到SO。請注意,SO是答案和問題網站。在編程中記錄你的成功不是一個博客。 – joaquin

+0

@joaquin我知道,但是當有人會爲類似問題而奮鬥時,我該如何分享解決方案?如果這是[非常氣餒的方式](http://meta.stackexchange.com/questions/17463/should-i-ask-a-question-i-know-the-answer-to)並且此線程不正確,請版主刪除它。 – stx

回答

2

問題是與KB2264107 Windows更新(http://support.microsoft.com/kb/ 2264107),用DLL搜索例程(安全修復)「搞亂」。設置註冊表值[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager]:CWDIllegalInDllSearch爲0,允許正確加載DLL文件並正確導入.pyd模塊。這也可能發生在其他Windows版本上。

4

兩個解決方案,無需使用註冊表編輯器

  1. 添加BOOST_PYTHON_STATIC_LIB馬當建立您的DLL。它會讓 boost.python靜態鏈接到您的dll文件,而不是在運行時動態加載 。
  2. Boost.Python的DLL添加到PATH或將其複製到同一目錄在您的DLL找到
+0

我得到了同樣的問題。它與DLL搜索路徑有關,但與KB2264107 Windows更新無關(「修復」DLL搜索例程)。 2是正確的答案。 – user5280911

相關問題