Не удается открыть включаемый файл: ‘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. Когда я запускаю этот код, я получаю ошибку

Не удается открыть включаемый файл: ‘atlbase.h’: нет такого файла или каталога

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

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

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

9

Решение

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

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 ++.

12

Другие решения

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

6

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

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

1

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

  1. запустил Visual Studio от имени администратора.
  2. Создано консольное приложение Win32 c ++
  3. НЕ проверял «Пустой проект» в мастере создания проекта на С ++.
  4. НЕ проверял общие заголовочные файлы для ATL и MFC.

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

1

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

0
По вопросам рекламы [email protected]