通过mingw编译win32项目时缺失sal.h文件

3
错误信息:

致命错误:sal.h文件不存在 cstudy 第11行,外部位置:C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\specstrings.h C/C++问题。

但是当我将VC/include添加到项目中时,会收到大量的错误消息。看起来VC/include/sal.h不是GCC的标准头文件。

源代码非常简单:

#include "windows.h"
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{

    return 0;
}

环境:

  • Windows 7.0A SDK
  • VC 2010
  • MINGW
  • CDT/ECLIPSE.

谢谢。


你是否在尝试使用mingw编译Windows代码?建议你使用Visual Studio编译器来完成。 - Jesus Ramos
2
你安装了MinGW WIN32 API包吗?另外,你应该使用 #include <windows.h>,因为它是一个系统头文件。 - Some programmer dude
2个回答

1

不,sal.h头文件不是GCC / MinGW的一部分,但是您可以将VC/include/添加为Eclipse的包含目录。

另一种方法:所有所需的头文件移动到您的mingw或项目include目录中。MinGw的路径是:<mingw path>/include)。

无论如何,如果您安装了Windows SDK,则sal.h不会在SDK目录中,但是如果您选择安装编译器和工具,则会随之安装。这是因为sal.h在CRT头文件以及Windows头文件中都需要。因此,您需要安装VS编译器和工具以及SDK。然后,您会发现编译器默认安装在%ProgramFiles%\Microsoft Visual Studio 2010\VC下,并且sal.h位于该路径下的include文件夹中。在64位系统上,默认情况下它将位于%ProgramFiles(x86)%下。

来源: http://social.msdn.microsoft.com/Forums/eu/windowssdk/thread/0e166050-99f1-436b-bd94-b39e2910f43d

参见:


0

我刚遇到这个问题。在 MS Windows 版本的 mingw 中,我似乎无法获取 sal.h 头文件,但是在我的 Fedora Core 18 机器上运行 "yum whatprovides \*/sal.h" 命令会显示出 mingw-headers 包。我下载了源代码包(即 yumdownloader --source mingw-headers),在 file-roller 中打开了 .tar.gz 文件,提取了 sal.h 文件,并将其放置在我的 MS Windows 机器上的 /c/MinGW/include 目录中。

同样的包中还有 dsound.h,这是下一个缺失的头文件。

我从未尝试在 Fedora Core 下使用 mingw 来交叉编译 MS Windows 应用程序,不过也许现在是时候了... :-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接