トップ «前の日記(2013-04-28) 最新 次の日記(2013-04-30)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2013-04-29

_ mirbのWindows Store版を提出した

MSVCRTのGetModuleFileNameやLoadLibraryを呼び出すコードがリンクされるため、一時はどうなるかと思ったが、ローカルでのテストは通過したので、Windowsストアへ提出してみた。

まだ審査があるみたいなので、どうなるかはちょっとわからないけど。 なお、(WinMIrbという名前にした)に関しては、ほとんどmirbなので無料で公開します。

Windowsアプリ認証キットの結果

最終的にx86のNOSTUDIO版(というか、Windows Store App用)のビルド記述は以下となりました。 ちょっとトライ&エラーしているうちに間違えてたので、書き直した

MRuby::CrossBuild.new('nostdio') do |conf|
  toolchain :vs2012
  conf.cc.flags = %w(/c /nologo /W3 /MD /Zi /Od /DHAVE_STRING_H /DNO_GETTIMEOFDAY /D_CRT_SECURE_NO_WARNINGS /DDISABLE_STDIO /TP /ZW:nostdlib /DNDEBUG)  
  conf.build_mrbtest_lib_only
  conf.bins = %w()
  conf.gem 'examples/mrbgems/c_and_ruby_extension_example'  
  conf.archiver do |archiver|
    archiver.archive_options << ' /LTCG'
  end
end

ミソは、/ZW:nostdlibと、lib用の/LTCG。あと、/TPでC++としてコンパイルしている。なお、デバッグ版ライブラリ(/MDd)はIOを含むので当然だめ。

_ 上の続き

/TPはやめても問題なさそう。0428#c02参照。あと、使う方もDISABLE_STDIOが必要ってのは忘れがち、というか忘れてそこでもはまった。

_ static library用の設定

最初に書いたCFLAGSなどは累積修正の結果で、正しくなかった。

以下、何が必要か、何がまずいか。

/RTC1 ― これがまずい。cl /?では、高速チェックの有効という書き方しかしていないし、/RTC (ランタイム エラー チェック)を読んでも良くわからないのだが、/RTC1によってランタイムのWindows Store App非互換なコードの組み込みが指定されるようだ(推測)。

libの/LTCGによって非互換コードの組み込みが阻止されるのかと考えたのだが、それは間違いだった。これは不要。

で、/RTC1を外すと、それだけで良さそうで、/ZW (ライブラリには:nostdlibを付けたほうが良いと思われる)の要不要は不明(付けなくとも動くが、おそらく付けたほうが矛盾したコードに対する指摘が入ると思う)。

/DNDEBUGは不要。ただし、_DEBUGを外すことになるのでマーカとして入れたほうが良いかも知れない。

で、以下となった。

MRuby::CrossBuild.new('nostdio') do |conf|
  toolchain :vs2012
  conf.cc.flags = %w(/c /nologo /W3 /Zi /Od /DHAVE_STRING_H /DNO_GETTIMEOFDAY /D_CRT_SECURE_NO_WARNINGS /DDISABLE_STDIO /TP /MD /ZW:nostdlib /DNDEBUG)  
  conf.build_mrbtest_lib_only
  conf.bins = %w()
  conf.gem 'examples/mrbgems/c_and_ruby_extension_example'  
end

2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|

ジェズイットを見習え