2013-05-06 2 views
7

Пожалуйста, посмотрите на следующий кодНевозможно открыть файл включать: «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 в моей машине. Однако этот код работает без ошибок в моем ноутбуке, и я получил эти 2 файла.

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

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

+0

Тот же каталог, который вы нашли на своем ноутбуке, является хорошим выбором :) –

+0

Это проблема. Каталог - профессионал VS 2010. У меня есть 1 лицензия, я думаю. –

+0

См. Http://stackoverflow.com/questions/3898287/c-include-atlbase-h-is-not-found –

ответ

10

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

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

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

+0

Спасибо за помощь :) –

1

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

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

+0

Спасибо за ответ. +1 от меня :) –

0

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

6

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

+0

к сожалению, у него появилось много нерешенных ошибок символов и main.obj, а не ошибки forund –

+2

Обещаю вам, вам не нужен ATL для этого приложения, его прямой COM приложение. Настройки проекта или среда должны быть чем-то неправильными. – john

+0

Спасибо за ответ. Вы используете MinGW qt или VS2010 Compiler QT? Я использую тот, который использует компилятор VS 2010. Пожалуйста помоги! Это мой последний проект года !!!!!!!! –

1

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

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

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