[groonga-dev,02659] Re: MariaDB 10.0.13バンドル版MroongaをVS2013でビルドすると失敗します

Back to archive index

Kouhei Sutou kou****@clear*****
2014年 8月 16日 (土) 19:01:17 JST


須藤です。

In <53EF2****@gmail*****>
  "[groonga-dev,02658] MariaDB 10.0.13バンドル版MroongaをVS2013でビルドすると失敗します" on Sat, 16 Aug 2014 18:13:50 +0900,
  hiroshi hatake <cosmo****@gmail*****> wrote:

> MariaDB 10.0.13バンドル版Mroonga 4.04
> http://packages.groonga.org/nightly/mariadb-10.0.13-with-mroonga-4.04-for-windows.2014.08.16.zip
> をVisual Studio 2013 Express for Desktopにてビルドするとビルドに失敗します。
> Visual Studio 2010 Professionalでは問題なくビルドが完了します。
...
> Visual Studio 2013 zip-32:
...
> https://dl.dropboxusercontent.com/u/36753409/with-mariadb-10.0.13/config-mroonga-4.04-with-mariadb-10.0.13-vc2013-zip-32.log

これを見る感じだと

  C:\jw\workspace\dmbvc2013\powershell\work\source\storage\connect\tabwmi.cpp(203): error C3861: 'max': 識別子が見つかりませんでした [C:\jw\workspace\dmbvc2013\powershell\work\build-vc2013-zip-32\storage\connect\connect.vcxproj]

が原因ですよね。
connectというストレージエンジンでビルドエラーが発生しているっ
てことですよね。

MSDNのmaxの説明
  http://msdn.microsoft.com/en-us/library/a3xbc7ya.aspx
を読むと、<algorithm>をincludeするとstd::maxが定義されるよう
にみえます。

> Requirements
>   Header: <algorithm>
>   Namespace: std

ということで、

  source\storage\connect\tabwmi.cpp

に

  #include <algorithm>

を追加して、203行目の

  length[0] = max(length[0], len);

を

  length[0] = (std::max)(length[0], len);

にしてみるのはどうでしょうか!?
(std::maxを括弧で括っているのはmaxがマクロでも展開されない
ようにするため。)


これでビルドできるようになるとすると、これはconnectストレー
ジエンジンの問題なので、MariaDBに報告するのがよいのかしら。


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/>

Groongaベースの全文検索システムを総合サポート:
  http://groonga.org/ja/support/
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
  http://www.clear-code.com/recruitment/
コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ:
  http://www.clear-code.com/services/code-reader/




groonga-dev メーリングリストの案内
Back to archive index