Не удается открыть файл include: 'atlbase.ч': нет такого файла или каталога

пожалуйста, посмотрите на следующий код

#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. Когда я запускаю этот код, я получаю ошибку

не удается открыть файл include: 'atlbase.ч': нет такого файла или каталога

Я заметил, что у меня нет файлов atlbase.h или atlcom.h в моей машине. Тем не менее, этот код работает без ошибок в моем ноутбуке, и я получил эти файлы 2 там.

Я думаю о том, чтобы получить копию этих 2 файлов на моем рабочем столе компьютер и будет ли он работать? Если да, то в какую папку я должен их скопировать? Обратите внимание, что я новичок в программировании windows, QT и речи.

пожалуйста, помогите!

5 ответов


для меня эти файлы находятся здесь:

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 для Express, пожалуйста, посмотрите на эту тему как добавить WTL и ATL в visual studio C++ express 2008

Я не думаю, что копирование atlbase.h и atlcom.hпоможет вам. Вы можете попытаться получить все atl*.h файлы и установка необходимого распространяемого пакета Microsoft Visual C++.


вам не нужны эти заголовки для этого кода. Удалить extern CComModule _Module; и заголовки atl. Добавить #include <windows.h>.


наличие заголовков, безусловно, шаг в правильном направлении, но вам также понадобятся библиотеки для компиляции (если все не реализовано в заголовках). Вы можете разместить заголовки там, где хотите, просто убедитесь, что компоновщик находит их (либо в местоположении по умолчанию*, либо включив путь в качестве флага).

*Я не знаю расположение по умолчанию для Windows.


Я установил VS 2015 Express, который сказал, что он был VS 2017 Community, когда он работал и имел эту altbase.h проблема с очень простыми программами c++. Вы можете зациклиться на получении точных включают файлы, или вы можете сделать шаг назад, чтобы решить эту проблему. Microsoft-большая, основательная компания, когда они дают вам компилятор C++, они дают вам необходимые библиотеки. Когда я исправил эту проблему, я

  1. запуск Visual Studio от имени администратора.
  2. создал Win32 C++ консольное приложение
  3. не проверял "пустой проект"в мастере создания проекта c++.
  4. не проверял Общие файлы заголовков для ATL и MFC.

затем, когда я добавил свой код, сгенерированный stdafx.H включенный по умолчанию заголовок не вызывал эту altbase.h проблема, как это было раньше. Я смог добавить другие включения и сделал "использование пространства имен std"; и я смог сделать cout и cin. Моей базовой операционной системой была Windows 7 Home Premium. Очевидно, что при установке VS 2015/2017 Express вам нужно было установить флажок c++ для установки.


ATL и MFC поставляются с розничными версиями VC++. Не имеет значения, где вы разместите includes и библиотеки (atl*.lib) необходимо. Просто укажите правильные пути к ним в IDE.