• 締切済み

別環境に移植するとヘッダファイル内でエラーが出ます

ある開発環境ではコンパイルできたソースコードを、別の環境に移したところ、コンパイルができなくなってしまいました。 以前の環境の詳細が分からないので困っています。 以下、現在の環境とエラーについて記述します。 現在の開発環境:VC++ 6.0 OS:WindowsXP Professional DirectX9 SDK、PlatForm SDK をインストール済 (先程インストールしました) コンパイルを行ったところ、'DWORD_PTR'に関するエラーが大量に出ました。 エラーメッセージの一例: C:\DXSDK\INCLUDE\dxtrans.h(2580) : error C2061: 構文エラー : 識別子 'DWORD_PTR' がシンタックスエラーを起こしました。 C:\DXSDK\INCLUDE\mmstream.h(99) : error C2065: 'DWORD_PTR' : 定義されていない識別子です。 コードの冒頭では以下の順でヘッダファイルをインクルードしています。 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <dshow.h> #include <qedit.h> #include <math.h> #include <time.h> #include <winsock2.h> #include <stdarg.h> インクルードの優先順位の問題かと考えましたが、以前の環境ではこのコードのままで動いていたので、頭をひねっています。 どなたか、知恵を貸していただけませんか? よろしくお願いします。

みんなの回答

回答No.3

 まず、Platform SDK の Include ディレクトリで、 findstr DWORD_PTR *.h と入力して、DWORD_PTR を定義しているファイルがあるか確認してください。私の場合、basetsd.h で定義されていました。  定義されているようでしたら、VC++ の設定を確認してください。  プロジェクトを開き、「プロジェクト」→「設定」 「C/C++」タブのコンボから「プリプロセッサ」を選び、「インクルードファイルのパス」に Platform SDK の include フォルダのパスを設定して下さい。

回答No.2

インストールされているPlatForm SDKが最新のものでないため、 DWORD_PTRが定義されていないのかもしれません。 最新のPlatForm SDK新しく入れるか。 もしくは自分でDWORD_PTRを定義してしまうかの方法があります。 おそらく<dshow.h>以下のヘッダファイル内に DWORD_PTRが使用されているので、自分で定義する場合は #include <stdlib.h> __if_not_exists( DWORD_PTR ){ typedef DWORD DWORD_PTR; } #include <dshow.h> とすればエラーはなくなると思います。

回答No.1

とりあえず、以前の環境というやつが何かを調べたらどうでしょう。

関連するQ&A

  • ヘッダーファイル『windows.h』について

    C言語のサンプルプログラムでよく#include <windows.h>というものを 見かけるのですが、実際コンパイルしようとすると : fatal error C1083: include ファイルを開けません。'windows.h' : No such file or directory というエラーメッセージがでてしまいます。 コンパイルはMicrosoft .NET Framework SDK を入れて使っているのですが、サポートしていないと思われます。 どうにかしてこの環境で『windows.h』もしくはそれと同様な事ができる方法はありませんでしょうか? 宜しくお願いします。

  • ヘッダーファイルがみつからない

    先日、外部より入手したCのソースファイルをコンパイルしたのですが、以下のエラーが発生しました。 #include file <Dt/Dt.h> not found. #include file <Dt/Action.h> not found. #include file <Dt/ComboBox.h> not found. Dt.h/Action.h/ComboBox.h はプラットホームに付随するヘッダーファイルだと思うのですが、私の開発環境にはそのファイルが実際見つかりません。 開発環境に何かが足りないのでしょうか? 各環境の詳細は以下のとおりです。 【入手先】 OS : HP-UX Dev Env : 不明 【私】 OS : AIX4.3.3.0 Dev Env : VisualAge C++ 5.0.2.0 上記の内容だけでわかる方、いらっしゃいましたらアドバイスお願いします。

  • DirectX8.0SDKサンプルのビルドでエラーが出てしまいます。

    DirectX8.0aのDirectShowのサンプルをビルドすると下記のエラーが発生して, コンパイルできません。 ..\..\..\..\include\strmif.h(28) : fatal error C1189: #error : this stub requires an updated version of <rpcndr.h> 開発環境はVisual C++ 5.0 Learning Editionを使っています。 OSはWindowsMEです。 rpcndr.hのバージョンが古いためのようですが, Visual C++ 5.0ではDirectX8.0aは扱えないのでしょうか? ちなみに,インクルードファイルやライブラリファイルのパスは, DirectX SDKの方を先に探すように設定してあります。 (rpcndr.hはSDKには含まれてはいないようですが)

  •  OpenCV2.1.0でのコンパイルエラーについて、質問があります。

     OpenCV2.1.0でのコンパイルエラーについて、質問があります。  初心者で至らない点があるかと思いますが、ぜひ回答よろしくお願いします。  動画キャプチャを再生するプログラムを作ろうと、DirectXを利用しています。  (Visual C++ 2010 expressを使っています)  インクルードファイルでの<cv.h>や<dshow.h>は、Microsofot windows SDK 6.1  やOpenCv2.1.0をインストールして、VC++ディレクトリ中の   インクルードファイル(*.h)は    c:\OpenCV2.1\include\opencv   ラ イブラリファイル(*.lib)は    c:\OpenCV2.1\lib   ダイナミックリンクライブラリ ファイル(*.dll)は    c:\OpenCV2.1\bin  (これは、”実行可能なファイル"のところへ)  設定して、コンパイルエラーは出ないようになりました。  しかし、   「インクルードファイル(*.h)は  c:\OpenCV2.1\include\opencv」  の処置のおかげで、同一フォルダに入っている   「cxtypes.h」と「cxoperations.hpp」の二つで、下記のようなコンパイルエラーが出ます。   エラーメッセージ > error C3862: /clr:pure または /clr:safe を伴うアンマネージ関数を   コンパイルできません  インラインのネイティブ アセンブリはマネージ コードで   サポートされていません >error C3645: : __clrcall は、ネイティブ コードにコンパイルされた関数  では使用できません  上のエラーから、clrの問題と考えて、.NET .Freamework 4.0(x68)を  新しくインストールしましたが、上のエラーが解決せず、コンパイルできません。  VC++ディレクトリ中のリンカーは、     strmiids.lib     cv.lib     cxcore.lib     highgui.lib     dxerr.lib     dxguid.lib     d3dx9.lib     d3dx10.lib     d3d9.lib     winmm.lib     comctl32.lib     strmbase.lib  にしました。  コンパイルエラーを解決する方法をご教示くださると、大変幸いです。  よろしくお願いします。

  • windowsプログラムのヘッダーについて

    SDKを用いてWindowsプログラムを作っています。 #include <ctime> とインクルードした上でclock()関数を使用したのですが、コンパイラから未定義の関数を呼び出したことになってエラーが出てしまいます。他のヘッダーも含めC++の標準ライブラリはインクルードできないのでしょうか? ちなみに、<time.h>でインクルードすればコンパイルできます。

  • cwchar内でエラーが起きます。

    C++を勉強しているのですが、コンパイルをすると、 識別子が必要です cwchar C2059 構文エラー: '::' cwchar C2589 'unsigned': スコープ解決演算子 (::) の右側にあるトークンは使えません。 cwchar と、cwchar.h内でエラーが起きてしまいます。コードを絞っていって、最終的に以下のコードでもエラーが起きていました。 #include <iostream> using namespace std; int main(){     cout << "HelloWorld." << endl;     return 0; } なぜでしょうか?改善方法を教えていただけると嬉しいです。 環境はVisualStudioCommunity2015 windows10 です。

  • lstrcpyが使えない

    #include <dshow.h> としてlstrcpyを加えたコードを bcc32でコンパイルするとエラーが出ます。他にも色々使えない関数が出てきました。 --------------------------------------------- #include <windows.h> #include <dshow.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR lpCmdLine,int nCmdShow){ TCHAR ore[64]; lstrcpy(ore,TEXT("こんにちは")); return 0; } --------------------------------------------- bcc32 -I"C:\Borland\Bcc55\Include" -L"C:\Borland\Bcc55\Lib" -I"C:\Program Files\Microsoft DirectX 9.0 SDK (October 2005)\Include" -L"C:\Program Files\Microsoft DirectX 9.0 SDK (October 2005)\Lib" -I"C:\Program Files\Microsoft Platform SDK\Include" -L"C:\Program Files\Microsoft Platform SDK\Lib" -W test.cpp --------------------------------------------- エラー E2451 test.cpp 7: 未定義のシンボル lstrcpy_instead_use_StringCbCopy_or_St ringCchCopy(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) もし解決方をご存知の方がいらっしゃいましたらご教授なにとぞお願い致します。

  • コンパイルエラー「include ファイルを開けません」

    あるプログラムをコンパイルしたところ、 下記コンパイルエラーが発生しました。 ヘッダファイルが開けないようなのですが、 これは自分の開発環境に必要なファイルが足りないのでしょうか? 解決する方法が分からないので、ご存知の方おられましたら ご教示お願い致します。 環境はVC++2005でフルインストールしています。 fatal error C1083: include ファイルを開けません。'WtsApi32.h': No such file or directory

  • Python error C2061: 構文エラー : 識別子 'Py_uintptr_t'

    WindowsXPでPython2.6のC Extensionを作ろうとコンパイルすると、 以下のエラーが出ました。 何が悪いのでしょうか? samplemodule.c c:\python26\include\pyport.h(89) : error C2061: 構文エラー : 識別子 'Py_uintptr_t' c:\python26\include\pyport.h(89) : error C2059: 構文エラー : ';' c:\python26\include\pyport.h(90) : error C2061: 構文エラー : 識別子 'Py_intptr_t' c:\python26\include\pyport.h(90) : error C2059: 構文エラー : ';'

  • namespace名前空間をヘッダファイル間で共用したい

    環境: WinXP, VisualStudio2005 目的: 現在WinAPI系のライブラリを作っているのですが、以下のような 状況で、namespaceを.cppファイルだけでなく.hファイルでも共用 出来るようにすることは可能でしょうか? ちなみに以下のコードでは lib.h(5) : error C2653: 'G' : 識別子がクラス名でも名前空間名でもありません。 lib.h(5) : error C2065: 'A' : 定義されていない識別子です。 というエラーが出てきます。 // main.h ---------------------------------------------------- #include "Global.h" int main() { } // Global.h --------------------------------------------------- #pragma once #include "Lib.h" namespace G { const int A = 100; } // Lib.h ------------------------------------------------------- #pragma once #include "Global.h" int b = G::A; //名前空間Gの中にあるAを代入

専門家に質問してみよう