電子書籍の厳選無料作品が豊富!

ある開発環境ではコンパイルできたソースコードを、別の環境に移したところ、コンパイルができなくなってしまいました。
以前の環境の詳細が分からないので困っています。
以下、現在の環境とエラーについて記述します。

現在の開発環境: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>

インクルードの優先順位の問題かと考えましたが、以前の環境ではこのコードのままで動いていたので、頭をひねっています。
どなたか、知恵を貸していただけませんか?
よろしくお願いします。

A 回答 (3件)

 まず、Platform SDK の Include ディレクトリで、



findstr DWORD_PTR *.h

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

インストールされている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>

とすればエラーはなくなると思います。
    • good
    • 0

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!