无法打开包含文件:'atlbase.h':没有这样的文件或目录

时间:2013-05-06 17:37:39

标签: 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>

#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.hatlcom.h文件。但是,这段代码在我的笔记本电脑中运行没有错误,我在那里得到了这两个文件。

我正在考虑将这两个文件的副本复制到我的台式计算机中,它会起作用吗?如果是,我必须将它们复制到哪个文件夹?请注意我是Windows编程,QT和演讲的新手。

请帮忙!

5 个答案:

答案 0 :(得分:12)

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

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的一部分(但不是Express Edition的一部分)。 如果您需要获得快递ATL,请查看此主题How to add WTL and ATL to visual studio c++ express 2008

我认为复制atlbase.hatlcom.h不会对您有所帮助。 您可能尝试获取所有atl * .h文件并安装所需的Microsoft Visual C ++ Redistributable软件包。

答案 1 :(得分:6)

您不需要该代码的标头。删除extern CComModule _Module;和atl标头。添加#include <windows.h>

答案 2 :(得分:1)

拥有标题肯定是朝着正确方向迈出的一步,但您还需要这些库才能进行编译(除非所有内容都在头文件中实现)。您可以将标题放在您喜欢的位置,只需确保链接器找到它们(在默认位置*或将路径包含为标志)。

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

答案 3 :(得分:1)

我安装了VS 2015 Express,它表示它是VS 2017社区运行时,并且使用非常简单的c ++程序来解决这个altbase.h问题。您可以着手获取确切的包含文件,也可以退后一步来解决此问题。 Microsoft是一家大型,彻底的公司,当他们为您提供c ++编译器时,他们会为您提供所需的库。当我解决这个问题时,我

  1. 以管理员身份启动Visual Studio。
  2. 创建了一个Win32 c ++控制台应用
  3. 未在c ++项目创建向导上检查“空项目”。
  4. 未检查ATL和MFC的公共头文件。
  5. 然后当我添加我的代码时,生成的stdafx.h默认包含头文件并没有像之前那样导致这个altbase.h问题。我能够添加其他包含并执行“using namespace std;”我能够做cout和cin的。我的基本操作系统是Windows 7 Home Premium。显然,当你安装VS 2015/2017 Express时,你必须选择安装的c ++复选框。

答案 4 :(得分:0)

ATL和MFC附带零售版VC ++。无论你在哪里放置包含和库(atl * .lib)都需要。只需在IDE中为它们提供正确的路径。