POCOのビルドでC2664エラーが発生する。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tk-xleader

POCOのビルドでC2664エラーが発生する。

#1

投稿記事 by tk-xleader » 16年前

POCO(ttp://pocoproject.org/)をダウンロードして、Foundationディレクトリ内のFoundation_vs80からビルドしようと思ったのですが、C2664エラーが発生してどうしてもうまくいきません。どうすればよいのでしょうか?

環境:VC2005
POCOバージョン:1.3.3
エラーメッセージ
FileStream.cpp
c:\program files\microsoft visual studio 8\vc\include\istream(910) : error C2664: 'std::basic_ostream<_Elem,_Traits>::basic_ostream(std::basic_streambuf<_Elem,_Traits> *,bool)' : 1 番目の引数を 'std::_Uninitialized' から 'std::basic_streambuf<_Elem,_Traits> *' に変換できません。(新しい機能 ; ヘルプを参照)
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>
        ]
        整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
        c:\program files\microsoft visual studio 8\vc\include\istream(907): クラス テンプレート のメンバ関数 'std::basic_iostream<_Elem,_Traits>::basic_iostream(std::basic_streambuf<_Elem,_Traits> *)' のコンパイル中
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>
        ]
        c:\program files\microsoft visual studio 8\vc\include\istream(920) : コンパイルされたクラスの テンプレート のインスタンス化 'std::basic_iostream<_Elem,_Traits>' の参照を確認してください
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>
        ]
………
ビルドログは "<ビルドログ出力ファイルのパス>" に保存されました。
Foundation - エラー 1、警告 3
========== ビルド: 0 正常終了、4 失敗、0 更新、0 スキップ ==========
よろしくお願いします。

Justy

Re:POCOのビルドでC2664エラーが発生する。

#2

投稿記事 by Justy » 16年前

 うちは MSVC9/Poco1.3.3p1のバージョンですが、そのファイルでエラーは出ませんでした。
 
 見た感じ、basic_iostreamのコンストラクタ内で実行される basic_ostreamのコンストラクタで、
本来は _Uninitialized版のコンストラクタとして判定されるはずが、
なぜか一致せず、もう一方の basic_streambuf<_Elem, _Traits> *版のコンストラクタとも
型が合わずエラーになっているように見えます。

 basic_ostreamの _Uninitialized版のコンストラクタは "ostream"ヘッダで定義されていますか?

tk-xleader

Re:POCOのビルドでC2664エラーが発生する。

#3

投稿記事 by tk-xleader » 16年前

>basic_ostreamの _Uninitialized版のコンストラクタは "ostream"ヘッダで定義されていますか?

__CLR_OR_THIS_CALL basic_ostream(_Uninitialized)

のような関数が定義されていたので、これは大丈夫だと思います。
Pocoのバージョンも1.3.3p1です。

Justy

Re:POCOのビルドでC2664エラーが発生する。

#4

投稿記事 by Justy » 16年前

 一応、svn内の 1.3.4のそのファイルの差異とか、サポートページとかも見てみましたが、
特に該当する現象は見つかりませんでした。


 となると何でしょうね。
 
#MSVCや Pocoのヘッダ・ソースは書き換えてないですよね?


 ところで、FileStream.cppのビルド中、どの行でエラーが起きたのかが書かれていないのですが、
エラーメッセージはそれがすべてですか?

tk-xleader

Re:POCOのビルドでC2664エラーが発生する。

#5

投稿記事 by tk-xleader » 16年前

他には、文字コード関連のC4819の警告がありました。MSVCのヘッダーは書き換えていませんし、POCOは解凍直後の状態でやっています。
一応コンパイラがはいたメッセージの全文を添付します。

Justy

Re:POCOのビルドでC2664エラーが発生する。

#6

投稿記事 by Justy » 16年前

 ネットで探すと少数ですが、似たような症状が出ている人がいるようです。

Compiler error with fstream - PopCap Developer Program Forums
ttp://developer.popcap.com/forums/showthread.php?t=3720

win_tech_off_topic : Message: Re: [OT] Chrome/V8
ttp://tech.groups.yahoo.com/group/win_tech_off_topic/message/58481

 どちらも VisualStudioのパッチを当てた後発生しているらしいです。
 ただ明確な解決方法はなく、あっても「_Uninitialized版のコンストラクタを追加する」
という方法なのですでにある以上この方法は使えません。



>C4819の警告がありました

 こっちは 2005特有のものなので、あまり気にしなくてもいいのかも。
(2008では出ませんでした)


 うーん、原因を特定するのは難しいですね。
 今できることといえば
・ basic_iostreamを使ったサンプルを書いてみて、ビルドが通るか確認してみる
・ VisualStudio2005を再インストールするか、2008をインストールしてそちらで試す
 あたりでしょうか。

tk-xleader

Re:POCOのビルドでC2664エラーが発生する。

#7

投稿記事 by tk-xleader » 16年前

VC2008を使って試してみましたら、うまくいきました、ありがとうございます。

しかし、VC2008はExpressEditionですので、2005のATLを使えないのがちょっと難点です(コンパイルはできるとしても、ライセンス的にはどうなのでしょうか…)

閉鎖

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