Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams #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; cout << "Not succeeded" << endl; ::CoUninitialize(); return TRUE;

I am using QT. When I run this code, I get the error

Cannot open include file: 'atlbase.h': No such file or directory

I noticed that I do not have the files atlbase.h or atlcom.h in my machine. However, this code runs without error in my laptop, and I got those 2 files there.

I am thinking about getting a copy of those 2 files into my desktop computer and will it work? If yes, to which folder do I have to copy them? I am new to Windows programming, QT and speech.

VS has a very liberal license, you can deploy it on any machine you own as long as they are not used concurrently. Clearly you'll want to take advantage of that, messing with the Express edition is a waste of your time. Hans Passant May 6, 2013 at 18:19

For me these files are located here:

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

Please note ATL is part of Microsoft Visual Studio (but not the Express Edition). If you need get ATL for Express please take a look at this topic How to add WTL and ATL to visual studio c++ express 2008

I don't think copying atlbase.h and atlcom.hwill help you. You might try to get all atl*.h files and install required Microsoft Visual C++ Redistributable package.

unfortunatly, it came out with lot of unresolved symbol errors and main.obj not forund errors – PeakGen May 7, 2013 at 4:24 I promise you, you do not need ATL for this application, its a straight COM app. Your project settings or environment must be wrong somehow. – john May 7, 2013 at 5:43 Thanks for the reply. Are you using MinGW qt or VS2010 Compiler QT? I am using the one which use VS 2010 compiler. Please help! This is my final year project!!!!!!!! – PeakGen May 7, 2013 at 6:35 Thank you so much for the answer. I started a project with VS2013 which installation includes atlstr.h, but I have long moved to newer versions of VS. I was installing VS2013 just for the sake of this file until I saw your answer. – Hong Nov 25, 2017 at 13:04

Having the headers is certainly a step in the right direction, but you will also need the libraries in order to compile (unless everything is implemented in headers). You can place the headers where you like, just make sure the linker finds them (either in the default location* or by including the path as a flag).

*I don't know the default location for Windows.

I installed VS 2015 Express which said it was VS 2017 Community when it ran and was having this altbase.h problem with very simple c++ programs. You can fixate on getting the exact include files or you can take a step back to solve this problem. Microsoft is a big, thorough company, when they give you the c++ compiler they give you the libraries you need. When I fixed this problem I

  • started Visual Studio as administrator.
  • Created a Win32 c++ Console app
  • Did NOT check "Empty Project" on c++ project create wizard.
  • Did NOT check the Common Header Files for ATL and MFC.
  • Then when I added my code the generated stdafx.h default included header did not cause this altbase.h problem like it was doing before. I was able to add other includes and did a "using namespace std;" and I was able to do cout and cin's. My base operating system was Windows 7 Home Premium. Obviously when you installed VS 2015/2017 Express you had to select the c++ check box for the install.