2010-02-16 41 views
1

當我使用下面的代碼我得到一個編譯錯誤錯誤加載類型庫/ DLL

#import <dwmapi.lib> 
#include <dwmapi.h> 

我收到以下錯誤:

fatal error C1083: Cannot open type library file: 'c:\program files\microsoft sdks\windows\v7.0a\lib\dwmapi.lib': Error loading type library/DLL.

智能感知說:

2 IntelliSense: cannot open source file "c:/users/####/documents/visual studio 2010/Projects/modlauch/modlauch/Debug/dwmapi.tlh": Bad file descriptor c:\users\####\documents\visual studio 2010\projects\modlauch\modlauch\modlauchdlg.cpp 7 1 modlauch

有誰知道如何解決它?我確信我的'dwmapi'庫很好,沒有錯。我在VS2010中使用MFC,但我不認爲這與問題有關。 (平臺 - 的Win32

如果我擺脫「#進口」然後我得到「無法解析的外部符號__imp__DwmExtendFrameIntoClientArea @ 8」的錯誤。

回答

5

dwmapi .lib是一個類型庫嗎?你確定它不只是一個普通的老dll。 com庫是.DLL或.tlb。

我認爲它是一個普通的老dll。所以你不要#導入它,你需要,而不是

#pragma comment(lib,"dwmapi.lib") 
+0

謝謝,修復它 – 2010-02-16 21:35:37

0

類型庫不是一個普通的對象庫。

類型庫通常在DLL,OCX文件和TLB文件中找到。

有幾次我導入了一個類型庫,它總是其中的一個,從來沒有.LIB文件。

使用REGTLB或REGTLIB命令(您可能需要在Google中查找)在系統中註冊類型庫。它類似於REGSVR32,但註冊了一個類型庫而不是COM組件。

您還可以使用OLEVIEW查看類型庫的內容。

8

這不是你的問題的答案,但是對於那些到達這裏時出現該錯誤信息的人 - 如果在從.lib包含時意外鍵入#import "Header.h"而不是#include "Header.h",那麼你將會得到該錯誤。

+0

謝謝,這是有幫助的。 – 2013-06-17 18:58:58