18

次のコードを見てください

#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 つのファイルがありました。

これら 2 つのファイルのコピーをデスクトップ コンピュータに取り込もうと考えていますが、うまくいきますか? はいの場合、どのフォルダーにコピーする必要がありますか? 私は、Windows プログラミング、QT、およびスピーチを初めて使用します。

4

5 に答える 5

19

私の場合、これらのファイルは次の場所にあります。

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 ではありません)。Express 用の ATL を取得する必要がある場合は、このトピックを参照してください。WTL と ATL を Visual Studio C++ Express 2008 に追加する方法

atlbase.hコピーは役に立たないと思いatlcom.hます。すべての atl*.h ファイルを取得して、必要な Microsoft Visual C++ 再頒布可能パッケージをインストールしようとする場合があります。

于 2013-05-06T18:05:25.373 に答える
7

そのコードにはこれらのヘッダーは必要ありません。extern CComModule _Module;および atl ヘッダーを削除します。を追加し#include <windows.h>ます。

于 2013-05-06T18:45:34.127 に答える
1

ATL と MFC には、VC++ の製品版が付属しています。必要なインクルードとライブラリ (atl*.lib) をどこに配置するかは問題ではありません。IDE でそれらへの正しいパスを指定するだけです。

于 2013-05-06T18:08:52.923 に答える