无法打开包含文件:“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.h
或atlcom.h
。但是,这段代码在我的笔记本电脑上运行时没有出现错误,我在那里找到了那两个文件
我正在考虑将这两个文件的副本放到我的台式计算机上,它会起作用吗?如果是,我必须复制到哪个文件夹?请注意我是Windows编程,QT和演讲的新手。
请帮忙!
对我来说,这些文件都位于这里:
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.h
和atlcom.h
会帮助你。 您可能会尝试获取所有atl * .h文件并安装所需的Microsoft Visual C++可再发行组件包。
感谢您的帮助:) – 2013-05-08 05:53:36
拥有标头肯定是朝着正确方向迈出的一步,但您还需要库来编译(除非所有内容都在头文件中实现)。你可以将标题放在你喜欢的地方,只要确保链接器找到它们(或者在默认位置*或者将路径作为标记)。
*我不知道Windows的默认位置。
感谢您的回复。 +1从我:) – 2013-05-08 05:53:51
ATL和MFC附带零售版本的VC++。无论您需要放置包含库还是库(atl * .lib),都无关紧要。只需在IDE中为他们提供正确的路径。
您不需要那些代码的标题。删除extern CComModule _Module;
和atl标题。添加#include <windows.h>
。
不幸的是,它出来了很多未解决的符号错误和main.obj不是Forund错误 – 2013-05-07 04:24:33
我答应你,你不需要ATL这个应用程序,它是一个直接的COM应用程序。您的项目设置或环境必须以某种方式错误。 – john 2013-05-07 05:43:48
感谢您的回复。你使用MinGW QT还是VS2010编译器QT?我使用的是使用VS 2010编译器的那个。请帮忙!这是我最后一年的项目!!!!!!!! – 2013-05-07 06:35:57
我安装了VS 2015 Express,它说它是VS 2017社区,当它运行时,并且使用非常简单的C++程序出现了这个altbase.h问题。您可以着眼于获取确切的包含文件,或者您可以退后一步来解决此问题。微软是一个大而全面的公司,当他们给你C++编译器时,他们会给你所需的库。当我解决这个问题时我
- 以管理员身份启动Visual Studio。
- 创建了一个Win32 C++控制台应用程序
- 未检查C++项目创建向导上的“空项目”。
- 未检查ATL和MFC的通用头文件。
然后,当我添加我的代码时,生成的stdafx.h默认包含的头文件不会像以前那样引起此altbase.h问题。我能够添加其他包含并做了一个“使用名称空间标准;”我能做cout和cin的。我的基本操作系统是Windows 7家庭高级版。显然,当您安装VS 2015/2017 Express时,您必须选择安装的C++复选框。
您在笔记本电脑上找到的目录是相同的目录:) – 2013-05-06 17:58:22
那就是问题所在。目录是VS 2010专业版。我猜我有1个许可证。 – 2013-05-06 18:06:30
参见:http://stackoverflow.com/questions/3898287/c-include-atlbase-h-is-not-found – 2013-05-06 18:07:51