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

Pea*_*Gen 9 c++ windows qt sapi header-files

请查看以下代码

#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;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用QT.当我运行此代码时,我收到错误

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

我注意到我没有文件atlbase.hatlcom.h我的机器.但是,这个代码在我的笔记本电脑中运行没有错误,我在那里得到了这两个文件.

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

请帮忙!

小智 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
Run Code Online (Sandbox Code Playgroud)

请注意ATL是Microsoft Visual Studio的一部分(但不是Express Edition).如果你需要获得快递ATL,请看看这个主题如何将WTL和ATL添加到visual studio c ++ express 2008

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


joh*_*ohn 6

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

  • 我保证,你不需要ATL这个应用程序,它是一个直接的COM应用程序.您的项目设置或环境必定是错误的. (2认同)