0

我有一个非常简单的 C++/CLI 窗体程序,它 100% 可以正常工作。

由于我想在单击窗口窗体上的按钮时添加呼叫 Internet Explorer,因此我添加了“一行代码”以进行测试。

我在#pragma once下添加#include "Shellapi.h"。之后,VS 给了我 500 行错误信息。

我的问题是我只是在我的程序中添加了一个 .h 文件。为什么会有什么问题?我错过了什么吗?

===========错误信息的前几行===============

1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\Shellapi.h(56): error C2065: 'HDROP' : undeclared identifier
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\Shellapi.h(56): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\Shellapi.h(59): error C2146: syntax error : missing ';' before identifier 'DECLSPEC_IMPORT'
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\Shellapi.h(59): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\Shellapi.h(59): error C2146: syntax error : missing ';' before identifier 'UINT'
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\Shellapi.h(59): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\Shellapi.h(59): error C2146: syntax error : missing ';' before identifier 'STDAPICALLTYPE'
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\Shellapi.h(59): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
4

2 回答 2

3

几件事:

  1. 您应该#include <windows.h>在任何 Windows 程序中

  2. 您应该包含任何系统文件 - 例如 shellapi.h - 使用方括号 ( <>) 而不是引号 ( ""),例如#include <shellapi.h>

  3. 如果您从命令行编译,最好运行“vcvars32.bat”(或等效文件)来为 Visual Studio 设置命令行环境。

于 2012-04-24T20:51:55.160 回答
0

我相信你之前忘记了#include <windows.h> #include <shellapi.h>

一般来说,(或至少在我个人的经验中),当你在包含一个标题后被一堵错误的墙轰炸时,你的缺失<windows.h>或其他一些标题。

于 2012-04-24T20:49:11.063 回答