web-dev-qa-db-ja.com

インクルードファイルを開くことができません: '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つのファイルをそこに取得しました。

これら2つのファイルのコピーをデスクトップコンピューターに取り込むことを考えていますが、機能しますか?はいの場合、どのフォルダにコピーする必要がありますか?私はWindowsプログラミング、QT、スピーチに不慣れです。

9
PeakGen

私にとって、これらのファイルはここにあります:

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はMicrosoftVisual Studioの一部であることに注意してください(Express Editionではありません)。 Express用のATLを入手する必要がある場合は、このトピックをご覧ください Visual Studio c ++ express 2008にWTLとATLを追加する方法

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

12

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

6
john

VS 2015 Expressをインストールしました。これは、実行時にVS 2017コミュニティであり、非常に単純なc ++プログラムでこのaltbase.hの問題が発生していたことを示しています。正確なインクルードファイルの取得に固執することも、一歩下がってこの問題を解決することもできます。 Microsoftは大規模で徹底的な会社であり、c ++コンパイラを提供すると、必要なライブラリを提供します。この問題を修正したとき

  1. 管理者としてVisualStudioを起動しました。
  2. Win32 c ++コンソールアプリを作成しました
  3. C++プロジェクト作成ウィザードで「空のプロジェクト」をチェックしませんでした。
  4. ATLとMFCの共通ヘッダーファイルを確認しませんでした。

次に、コードを追加したときに、生成されたstdafx.hのデフォルトのインクルードヘッダーは、以前のようにこのaltbase.hの問題を引き起こしませんでした。他のインクルードを追加することができ、「usingnamespacestd;」を実行しました。そして、私はカウトとシンをすることができました。私の基本オペレーティングシステムはWindows7 HomePremiumでした。明らかに、VS 2015/2017 Expressをインストールしたときは、インストール用にc ++チェックボックスを選択する必要がありました。

1
flashgordon

ヘッダーを持つことは確かに正しい方向への一歩ですが、コンパイルするためにライブラリも必要になります(すべてがヘッダーに実装されている場合を除く)。ヘッダーは好きな場所に配置できます。リンカーがヘッダーを見つけるようにしてください(デフォルトの場所*にあるか、パスをフラグとして含めることによって)。

* Windowsのデフォルトの場所がわかりません。

1
Marc Claesen

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

0
SChepurin