楓の掲示板

タイトル Re: TJSのVC++でのコンパイルについて
投稿日: 2005/07/09(Sat) 20:06
投稿者管理人
参照先http://www.kaede-software.com/

きららさん、はじめまして、こんばんは。

ブログを読んでいただいてありがとうございます。

まずお聞きしたいのですが、Visual Studioのバージョン、Boostのバージョン、STLPortのバージョン(使っていれば)はなんでしょうか?

TJSのVC++でのビルドはまだやっていません。
そこで、試してみようと思い1から始めたのですが、大変そうなのでリンクしていただいているソースを使いました。
いろいろと追ってみたところ、std::mem_funのエラーは、メンバ関数のCallbackの呼び出し規約『TJS_cdecl』が問題のようです。
つまり、
bool TJS_cdecl Callback(const match_results<const tjs_char *> what)

bool Callback(const match_results<const tjs_char *> what)
と書き換えれば、このstd::mem_funのエラーはなくなるのですが、今度は次のようなstd::bind1stのエラーが出るようになりました。

functional(278): error C2535: 'std::binder1st<_Fn2>::result_type std::binder1st<_Fn2>::operator ()(const std::binder1st<_Fn2>::argument_type &) const' : メンバ関数は、既に定義または宣言されています。
with
[
_Fn2=std::mem_fun1_t<bool,TJS::tTJSReplacePredicator,const boost::match_results<const wchar_t *>>
]
functional(272) : 'std::binder1st<_Fn2>::operator`()'' の宣言を確認してください。
with
[
_Fn2=std::mem_fun1_t<bool,TJS::tTJSReplacePredicator,const boost::match_results<const wchar_t *>>
]
tjsRegExp.cpp(118) : コンパイルされたクラスのテンプレートのインスタンス化 'std::binder1st<_Fn2>' の参照を確認してください
with
[
_Fn2=std::mem_fun1_t<bool,TJS::tTJSReplacePredicator,const boost::match_results<const wchar_t *>>
]

boostと標準のSTLが競合しているような感じなのですが、まだ詳しくは見ていません。
また、見てみたいと思います。

ちなみに当方の環境は、Visual Studio.NET 2003, Boost 1.32, STLPort未使用です。

それでは。


- 関連一覧ツリー (▼ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
Eメール
タイトル
メッセージ   手動改行 強制改行 図表モード
参照先
reCAPTCHA
下に表示されている二つの英単語を、スペースで区切って入力してください。

暗証キー (英数字で8文字以内)

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No 暗証キー