guiddef.hについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
e-z
記事: 24
登録日時: 14年前

guiddef.hについて

#1

投稿記事 by e-z » 14年前

私のguiddef.h(インクルードファイル)は、

コード:

/*
 * Copyright (C) 2000 Alexandre Julliard
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef GUID_DEFINED
#define GUID_DEFINED
typedef struct _GUID
{
    unsigned long  Data1;
    unsigned short Data2;
    unsigned short Data3;
    unsigned char  Data4[ 8 ];
} GUID;
#endif

#undef DEFINE_GUID

#ifdef INITGUID
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
        const GUID name = \
	{ l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
#else
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
    extern const GUID name;
#endif

#ifndef _GUIDDEF_H_
#define _GUIDDEF_H_

typedef GUID *LPGUID;
typedef GUID CLSID,*LPCLSID;
typedef GUID IID,*LPIID;
typedef GUID FMTID,*LPFMTID;

#if 0
#if defined(__cplusplus) && !defined(CINTERFACE)
#define REFGUID             const GUID &
#define REFCLSID            const CLSID &
#define REFIID              const IID &
#define REFFMTID            const FMTID &
#else /* !defined(__cplusplus) && !defined(CINTERFACE) */
#define REFGUID             const GUID* const
#define REFCLSID            const CLSID* const
#define REFIID              const IID* const
#define REFFMTID            const FMTID* const
#endif /* !defined(__cplusplus) && !defined(CINTERFACE) */
#endif

#if defined(__cplusplus) && !defined(CINTERFACE)
#define IsEqualGUID(rguid1, rguid2) (!memcmp(&(rguid1), &(rguid2), sizeof(GUID)))
#else /* defined(__cplusplus) && !defined(CINTERFACE) */
#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
#endif /* defined(__cplusplus) && !defined(CINTERFACE) */

#if defined(__cplusplus) && !defined(CINTERFACE)
#include <string.h>
inline bool operator==(const GUID& guidOne, const GUID& guidOther)
{
    return !memcmp(&guidOne,&guidOther,sizeof(GUID));
}
inline bool operator!=(const GUID& guidOne, const GUID& guidOther)
{
    return !(guidOne == guidOther);
}
#endif

extern const IID GUID_NULL;
#define IID_NULL            GUID_NULL
#define CLSID_NULL GUID_NULL
#define FMTID_NULL          GUID_NULL

#endif /* _GUIDDEF_H_ */
となっているがエラーが出てしまいます。

コード:

エラー E2132 guiddef.h 72: テンプレートおよびオーバーロードした演算子が C リンケージを持てない
エラー E2132 guiddef.h 76: テンプレートおよびオーバーロードした演算子が C リンケージを持てない
致命的エラー F1005 ctype.h 1: インクルードのネストが深すぎる
もう一度ダウンロードしてみましたが変わりません。
正しい中身を教えていただけないでしょうか?
(osは、windows XP コンパイラは、bccです。)
最後に編集したユーザー e-z on 2011年2月02日(水) 16:29 [ 編集 1 回目 ]

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: guiddef.hについて

#2

投稿記事 by みけCAT » 14年前

どんなエラーが出るのでしょうか?
コンパイルエラーについての質問の際はできればエラーメッセージの貼りつけをお願いします。
コンパイラ名も教えてください。
フォーラムルールもお読みください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: guiddef.hについて

#3

投稿記事 by softya(ソフト屋) » 14年前

闇雲に質問を増やさず、1つ1つ解決したほうがe-zさんの問題は速く解決すると思いますよ。
前の質問・問題点を放置せず、的確・正確に答えてもらえば解決につながります。
これもDXライブラリのコンパイルに関係していませんか?

[追記]
他の質問の問題もそうですが、環境設定のミスかこのヘッダをインクルードしているソースに問題がある可能性のほうが何倍もあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

e-z
記事: 24
登録日時: 14年前

Re: guiddef.hについて

#4

投稿記事 by e-z » 14年前

みけCATさんありがとうございます。
NO.1に書いておきます。

e-z
記事: 24
登録日時: 14年前

Re: guiddef.hについて

#5

投稿記事 by e-z » 14年前

softya(ソフト屋)さんへ
ありがとうございます 1つ1つとりくみたいと思います。
すいません 質問です  テンプレートおよびオーバーロードした演算子が C リンケージを持てない どの様な意味なのでしょうか。
最後に編集したユーザー e-z on 2011年2月02日(水) 17:34 [ 編集 1 回目 ]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: guiddef.hについて

#6

投稿記事 by softya(ソフト屋) » 14年前

e-z さんが書きました:softya(ソフト屋)さんへ
ありがとうございいます 1つ1つとりくみたいと思います。
すいません 質問です  テンプレートおよびオーバーロードした演算子が C リンケージを持てない どの様な意味なのでしょうか。
説明が難しいのですが、C言語の文法しか許されない場所にC++の文法で書かれた宣言があるというエラーです。
普通は初心者がこの罠に陥るのはありえないので環境か、もっと根本的なミスだと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

e-z
記事: 24
登録日時: 14年前

Re: guiddef.hについて

#7

投稿記事 by e-z » 14年前

ありがとうございます

e-z
記事: 24
登録日時: 14年前

Re: guiddef.hについて

#8

投稿記事 by e-z » 14年前

guiddef.hのエラーのないものをダウンロードする方法を教えて下さい。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: guiddef.hについて

#9

投稿記事 by softya(ソフト屋) » 14年前

guiddef.hに間違いがあるとは思えません。
同様に、tchar.h,'windows.h,stdio.h,mmreg.h,unknwn.hにエラーがあるとも思えません。

全てbccと同時にインストールされるもので、壊れているとは思えないのです。
なので何度も私や他の人もbccの環境の問題ではないかと指摘してきました。
もう一度、下記サイトの内容を頭っから目を皿にしてじっくりやり直してみてください。

「BorlandC++ Compiler 5.5  によるDXライブラリの使い方」
http://homepage2.nifty.com/natupaji/DxL ... e_bcc.html
どこかに抜けやミスがあるはずです。見逃しやよく分からず放置したところはありませんか?

Windows7でもちゃんと動くのに、多くのbccユーザーが使っているXPで動かないはずが無いと断言できます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

e-z
記事: 24
登録日時: 14年前

Re: guiddef.hについて

#10

投稿記事 by e-z » 14年前

おかげさまでインクルードファイルの問題は、解決いたしました。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る