加载类型库/ DLL时出错

时间:2010-02-16 21:27:15

标签: c++ mfc visual-studio-2010 winapi

当我使用以下代码时,我收到编译错误

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

我收到以下错误:

  

致命错误C1083:无法打开类型   库文件:'c:\ program   文件\微软   软件开发工具包\ WINDOWS \ v7.0a \ LIB \ dwmapi.lib“:   加载类型库/ DLL时出错。

Intellisense说:

  

2智能感知:无法开源   文件“c:/ users / #### / documents / visual   工作室   2010 /项目/ modlauch / modlauch /调试/ dwmapi.tlh“:   坏文件   描述符c:\ users \ #### \ documents \ visual   工作室   2010 \ projects \ modlauch \ modlauch \ modlauchdlg.cpp 7 1 modlauch

有谁知道如何解决它?我确信我的'dwmapi'库很好,它没有任何问题。我正在使用MFC和VS2010,但我不认为这与问题有关。 (平台 - Win32

如果我摆脱“#import”,那么我得到“未解析的外部符号__imp__DwmExtendFrameIntoClientArea @ 8”错误。

3 个答案:

答案 0 :(得分:10)

这不是您的问题的答案,但对于带有该错误消息到达此处的其他人 - 如果您在从.lib中包含时不小心输入#import "Header.h"而不是#include "Header.h"那么您将获得那个错误。

答案 1 :(得分:7)

dwmapi .lib是一个类型库?你肯定它不仅仅是一个普通的老dll。 com lib是.DLL或.tlb。

我认为这是一个普通的老dll。所以你不要#import它你需要

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

答案 2 :(得分:0)

类型库不是普通的对象库。

类型库通常位于DLL,OCX文件和TLB文件中。

我少数次#import'ed一个类型库,它总是其中之一,而不是.LIB文件。

使用REGTLB或REGTLIB命令(您可能需要在Google中查找)才能在系统中注册类型库。它与REGSVR32类似,但是注册一个类型库而不是COM组件。

您还可以使用OLEVIEW查看类型库的内容。