C++ 无法打开包含文件:“atlbase.h”:没有此类文件或目录

C++ 无法打开包含文件:“atlbase.h”:没有此类文件或目录,c++,windows,qt,header-files,sapi,C++,Windows,Qt,Header Files,Sapi,请看一下下面的代码 #define _ATL_APARTMENT_THREADED #include <atlbase.h> //You may derive a class from CComModule and use it if you want to override something, //but do not change the name of _Module extern CComModule _Module; #include <atlcom.h>

请看一下下面的代码

#define _ATL_APARTMENT_THREADED

#include <atlbase.h>
//You may derive a class from CComModule and use it if you want to override something,
//but do not change the name of _Module
extern CComModule _Module;
#include <atlcom.h>

#include <sapi.h>
#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
 cout << "Hello" << endl;
 ISpVoice * pVoice = NULL;

 if (FAILED(::CoInitialize(NULL)))
     return FALSE;

 HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
 if( SUCCEEDED( hr ) )
 {
     cout << "Succeeded" << endl;
     hr = pVoice->Speak(L"Hello world", 0, NULL);
     pVoice->Release();
     pVoice = NULL;
 }
 else
 {
     cout << "Not succeeded" << endl;
 }

 ::CoUninitialize();
 return TRUE;
}
我正在使用QT。当我运行这段代码时,我得到了错误

无法打开包含文件:“atlbase.h”:没有此类文件或目录

我注意到我的机器中没有文件atlbase.h或atlcom.h。然而,这段代码在我的笔记本电脑中运行时没有出错,我在那里得到了这两个文件


我正在考虑把这两个文件的副本放进我的桌面电脑里,这样行吗?如果是,我必须将它们复制到哪个文件夹?我不熟悉Windows编程、QT和speech。

拥有标题肯定是朝着正确方向迈出的一步,但您也需要库来编译,除非所有内容都在标题中实现。您可以将头放在您喜欢的地方,只需确保链接器在默认位置*找到它们,或者通过将路径包含为标志来找到它们


*我不知道Windows的默认位置。

对我来说,这些文件位于此处:

VS2010 - C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlbase.h
VS2008 - C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlbase.h
请注意,ATL是Microsoft Visual Studio的一部分,但不是快速版。 如果您需要获取ATL for Express,请查看此主题

我认为复制atlbase.h和atlcom.h对您没有帮助。
您可以尝试获取所有的ATL*H文件并安装所需的微软Visual C++可再分发包。无论您将在何处放置所需的Include和库atl*.lib。只需在IDE中提供到它们的正确路径。

该代码不需要这些头。移除外部组件(U)模块;;和atl标题。添加包含。< /P> < P>我安装了VS 2015 Express,它说它是VS 2017社区,当它运行,并有这个altBASE。H问题与非常简单的C++程序。您可以专注于获取确切的include文件,也可以退一步解决此问题。微软是一个大的、彻底的公司,当他们给你C++编译器时,它们会给你所需的库。当我解决这个问题时,我

以管理员身份启动Visual Studio。 创建Win32 C++控制台应用程序 在C++项目创建向导中没有检查空项目。 未检查ATL和MFC的公用头文件。
然后,当我添加代码时,生成的stdafx.h default included头不会像以前那样导致altbase.h问题。我能够添加其他包含,并使用名称空间std做了一个扩展;我能做cout和cin's。我的基本操作系统是Windows7家庭高级版。显然,当你安装了VS 2015/2017 Express时,你必须为安装选择C++复选框。

你在笔记本电脑上找到的同一目录是一个不错的选择:这就是问题所在。目录是VS2010专业版。我想我有1个许可证。看:VS有一个非常自由的许可证,你可以在你拥有的任何机器上部署它,只要它们不同时使用。很明显,你会想利用这一点,混用Express edition是在浪费你的时间。不幸的是,它出现了许多未解决的符号错误和main.obj not forund error我向你保证,这个应用程序不需要ATL,它是一个纯COM应用程序。您的项目设置或环境一定是错误的。谢谢您的回复。您使用的是MinGW qt还是VS2010编译器qt?我使用的是使用VS2010编译器的。请帮忙!这是我最后一年的项目!!!!!!!!我正在使用VS2010 express。非常感谢您的回答。我用VS2013启动了一个项目,该项目的安装包括atlst.h,但我一直在使用更新版本的VS。我安装VS2013只是为了这个文件,直到看到您的答案。谢谢您的回复+1来自我:这对我很有帮助: