2012-08-13 152 views
-1

我正在創建COM對象dll。當我把它帶到WIN XP 32位macheen並試圖註冊時,我得到了消息: LoadLibrary ... failed. The specified module could not be foundLoadLibrary ...失敗。缺少dll

當我看着它的Dependency Walker我發現有遺漏3的DLL:

ATL100.dll 
MSVCR100D.DLL 
DWMAPI.DLL 

什麼是解決這個問題的途徑?我不喜歡這樣一個事實,即當我將這個COM DLL安裝到我的客戶時,我還需要將缺失的DLL一起使用。

+3

在發佈之前做研究。這被問以前數百萬次。 http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/845617aa-ab76-4fe1-a658-d020828598b8 – 2012-08-13 12:05:46

+1

你是否缺少任何運行時庫?你是否嘗試用谷歌搜索失蹤dll的名字來找出它們的一部分? – Wug 2012-08-13 12:05:59

回答

1

您需要在客戶機上安裝MS VC++ 2010 redistributable pack

你也應該對REDIST包的發行版鏈接程序,而不是分發VC++運行時(msvcr100d.dll)的調試版本,它的發行對應的是VS2010可再發行組件包的一部分,如所描述here。 ATL100.dll也是該包的一部分。 MS有嚴格的關於which dll can be distributed with the application的政策。 A previous post about DWMAPI.DLL將有助於理清這個問題。

+0

同意。 MSVCR100D.DLL不是一個可合法分發的庫,因此OP需要在嘗試分發之前確保所有內容都在發佈模式下構建。 – drescherjm 2012-08-13 12:35:56