2012-08-08 77 views
0

我有代碼來調用用C編寫的DLL。這段代碼在我們有Windows7的開發人員機器上工作正常。但是它在我們擁有Windows Embedded Standard OS的Kiosk上出現以下異常:「無法加載DLL'xxx.dll':指定的模塊找不到(來自HRESULT的異常:0x8007007E)」。DLLImport未能加載DLL

我的DLL和我以前一樣在我的工作目錄中。我的項目設置沒有改變,工作目錄被正確指定。我嘗試用從Kernel.DLL導出的函數設置「DllImport」路徑,但它無能爲力。有什麼可以改變造成這個錯誤?

回答

0

使用像DependencyWalkier http://www.dependencywalker.com/這樣的ome工具加載DLL並檢查DLL需要什麼外部模塊。可能發生的情況是,您的W7上沒有Kiosk機器上存在的東西。如果我沒有記錯,如果.Net沒有找到所有的依賴關係,它會引發同樣的異常。

該工具將允許您查看DLL引用的本機模塊。如果您設法在Kiosk上運行該工具,它會向您報告所有缺失的依賴關係。如果有的話 - 你有理由。如果沒有 - 好吧..那麼有趣的開始:)

Btw。堆棧跟蹤中有趣的事情? Btw2。你嘗試過啓用fusionlog嗎?嗯..不。它是本地DLL,所以Depends應該找到原因。我敢打賭這是運行時版本。 AAAh正確---這個DLL完全是你的還是不是?如果是你的話,是否使用DEBUG或RELEASE模式構建本地DLL?如果調試,然後在Release中重新編譯。這是一個很常見的陷阱。