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

问题描述:

请看看下面的代码无法打开包含文件:“atlbase.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。当我运行这段代码,我得到的错误

Cannot open include file: 'atlbase.h': No such file or directory

我注意到,我没有这些文件在我的机器atlbase.hatlcom.h。但是,这段代码在我的笔记本电脑上运行时没有出现错误,我在那里找到了那两个文件

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

请帮忙!

+0

您在笔记本电脑上找到的目录是相同的目录:) – 2013-05-06 17:58:22

+0

那就是问题所在。目录是VS 2010专业版。我猜我有1个许可证。 – 2013-05-06 18:06:30

+0

参见:http://*.com/questions/3898287/c-include-atlbase-h-is-not-found – 2013-05-06 18:07:51

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

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是微软的Visual Studio(但不属于快速版)的一部分。 如果你需要得到ATL的快递,请看一看这个话题How to add WTL and ATL to visual studio c++ express 2008

我不认为抄袭atlbase.hatlcom.h会帮助你。 您可能会尝试获取所有atl * .h文件并安装所需的Microsoft Visual C++可再发行组件包。

+0

感谢您的帮助:) – 2013-05-08 05:53:36

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

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

+0

感谢您的回复。 +1从我:) – 2013-05-08 05:53:51

ATL和MFC附带零售版本的VC++。无论您需要放置包含库还是库(atl * .lib),都无关紧要。只需在IDE中为他们提供正确的路径。

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

+0

不幸的是,它出来了很多未解决的符号错误和main.obj不是Forund错误 – 2013-05-07 04:24:33

+2

我答应你,你不需要ATL这个应用程序,它是一个直接的COM应用程序。您的项目设置或环境必须以某种方式错误。 – john 2013-05-07 05:43:48

+0

感谢您的回复。你使用MinGW QT还是VS2010编译器QT?我使用的是使用VS 2010编译器的那个。请帮忙!这是我最后一年的项目!!!!!!!! – 2013-05-07 06:35:57

我安装了VS 2015 Express,它说它是VS 2017社区,当它运行时,并且使用非常简单的C++程序出现了这个altbase.h问题。您可以着眼于获取确切的包含文件,或者您可以退后一步来解决此问题。微软是一个大而全面的公司,当他们给你C++编译器时,他们会给你所需的库。当我解决这个问题时我

  1. 以管理员身份启动Visual Studio。
  2. 创建了一个Win32 C++控制台应用程序
  3. 未检查C++项目创建向导上的“空项目”。
  4. 未检查ATL和MFC的通用头文件。

然后,当我添加我的代码时,生成的stdafx.h默认包含的头文件不会像以前那样引起此altbase.h问题。我能够添加其他包含并做了一个“使用名称空间标准;”我能做cout和cin的。我的基本操作系统是Windows 7家庭高级版。显然,当您安装VS 2015/2017 Express时,您必须选择安装的C++复选框。