【GUI】wxWidgets(旧wxWindows) その5【サイザー】 (960レス)
【GUI】wxWidgets(旧wxWindows) その5【サイザー】 http://mevius.5ch.net/test/read.cgi/tech/1270793556/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
719: デフォルトの名無しさん [sage] 2014/09/02(火) 13:46:25.35 ID:TmMSlGm8 configure を試してみたら、configureのヘルプ通りには行かなかった: ・以下、xxx = wxWidgets-2.8.12 とする。/xxx/ に configure スクリプトがある。 ・configureを使用するために、単なるcmd.exeではなくcygwin環境が必要であった。 ・cygwinを起動する際、cygwin に入ってからの PATH が、 (MinGWのbin) : /usr/local/bin/ : /usr/bin/ : (Winからのbin) の順になるようにした。 ・カレントを /xxx/ にして configure した。configure の引数には少なくとも ・--build=i686-pc-mingw32 --host=i686-pc-mingw32 --target=i686-pc-mingw32 を指定し、例外, rtti, regex, zlib, jpeg, png, tiff は無効にするオプション を設定した。他にも無効にしたものも多い。大量に及ぶので スクリプトに記述した。 ・Makefileが普段の /xxx/build/msw/ ではなく、/xxx/ に作られた。 ・/xxx/samplesのサブディレクトリにあるMakefileが書き換えられた。 ・setup.h が、 /xxx/lib/wx/include/msw-ansi-releasw-static-2.8/wx /xxx/lib/wx/include/msw-ansi-releasw-2.8/wx の二箇所に作成された。元々各所にあるが、例としては /xxx/include/ws/msw や /xxx/lib/gcc_lib/msw/wx にある。 ・/xxx/ で make[ret] してみた。 ・途中で例外を有効にするように言われたので有効にした。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/719
720: デフォルトの名無しさん [sage] 2014/09/02(火) 13:46:50.57 ID:TmMSlGm8 ・regex, zlib, jpeg, png, tiff は全て無効にしていたにも関わらず、 src/regex, src/zlib, src/jpeg, src/tiff にしかない *.h ファイルが見つから ないエラーとなった。。 そこで、Makfileを直接修整して、CPPFLAGS に -I 指定によって、上記ディレクトリ を最後尾に追加した。 ・make には成功した。 ・/xxx/ に大量の *.o ファイルが作られ、*.a は /xxx/lib/ に作られた。 /build/msw から make した場合は、/xxx/lib/gcc_lib に作られるのと対照的 である。 ・/xxx/samples/console で make してみたら、成功した。 ・「プロシージャエントリポイント _gxx_persolanity_v0 が ダイナミック リンク ライブラリ libstdc++-6.dll から見つかりませんでした。」 のメッセージボックスが出て起動できず。 ・Makefileを書き換えて、LIBS の最後に -lstdc++ を書いても症状は治まらない。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/720
721: デフォルトの名無しさん [sage] 2014/09/02(火) 13:48:11.36 ID:TmMSlGm8 ・regex, zlib, jpeg, png, tiff は全て無効にしていたにも関わらず、 src/regex, src/zlib, src/jpeg, src/tiff にしかない *.h ファイルが見つから ないエラーとなった。。 そこで、Makfileを直接修整して、CPPFLAGS に -I 指定によって、上記ディレクトリ を最後尾に追加した。 ・make には成功した。 ・/xxx/ に大量の *.o ファイルが作られ、*.a は /xxx/lib/ に作られた。 /build/msw から make した場合は、/xxx/lib/gcc_lib に作られるのと対照的 である。 ・/xxx/samples/console で make してみたら、成功した。 ・「プロシージャエントリポイント _gxx_persolanity_v0 が ダイナミック リンク ライブラリ libstdc++-6.dll から見つかりませんでした。」 のメッセージボックスが出て起動できず。 ・Makefileを書き換えて、LIBS の最後に -lstdc++ を書いても症状は治まらない。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/721
722: デフォルトの名無しさん [sage] 2014/09/02(火) 16:41:02.66 ID:TmMSlGm8 console.cpp の中身を printf() だけを使う4行の main() 関数だけに 書き換えてみたら問題なく起動して普通に文字列が表示された。 なので、MinGW 環境の問題ではなさそう。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/722
723: デフォルトの名無しさん [sage] 2014/09/02(火) 17:12:10.67 ID:TmMSlGm8 wxPrintf()だけを使った console 版 hello world が、static link で 96,468 bytes で済んだ。 ところが、wxString を使った場合、作成した exe を実行しようとすると >>721 後半で書いたメッセージ・ボックスが出て起動できない。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/723
725: デフォルトの名無しさん [sage] 2014/09/02(火) 17:44:29.48 ID:TmMSlGm8 >>724 ダイナミックライブラリであるところの libstdc++-6.dll は既に読み込めているんですわ。 「libstdc++-6.dll から見つかりませんでした。」 の「から」がそれを表している。 なお、configureを使わずに、build/msw から build したライブラリだと wxStringとwxPrintfだけを使ったconsoleアプリは、静的リンクでも 451,584 バイトで済むことが判明。こちらはちゃんと起動できる。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/725
727: デフォルトの名無しさん [sage] 2014/09/02(火) 19:56:42.14 ID:TmMSlGm8 MinGW/bin を i686-pc-mingw32-g++ と MinGW/bin/g++ は別物らしくコンパイラのサイズ (作ったプログラムのサイズではなく変換機のサイズ)がそもそも違う。 また、前者では、リンク段階で何もエラーを出さないが、 後者では、ちゃんと、_gxx_persolanity_v0 や _Unwind_Resume が undefined reference というエラーになる。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/727
728: デフォルトの名無しさん [sage] 2014/09/02(火) 20:00:33.47 ID:TmMSlGm8 >>726 最初、xxx dw2 yyy.dll が見つからない、と言うメッセージ・ボックス が出たのだが、そのdllを検索すると MinGW/bin にある事が分かって、 そこにパスを通したらそのメッセージ・ボックスは出なくなった。 その代わりに >>721 のメッセージ・ボックスが出るようになった。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/728
729: デフォルトの名無しさん [sage] 2014/09/02(火) 20:55:48.58 ID:TmMSlGm8 結論的に言うと、自分のローカルにMinGW32 の別バージョンが沢山あった。 サンプルのコンパイルに使われたのと同じMinGW32のbinだけをパスに 設定してからサンプルを起動すると実行できるようになった。 実行結果も問題ない。実行ファイルはstripするとサイズが小さくなったが、 >>691のライブラリをリンクした物よりも大きくなってしまった。 [wxStringを使った最小な cui program のサイズ] ・>>691 のwxライブラリ使用時 : 451,584 bytes コンパイラは CodeBlocks付属のMinGW ・configureしたwxライブラリ使用時 : 547,342 bytes コンパイラは cygwinにインストールしたMinGW [wxFrameを使った最小な gui program のサイズ] ・>>691 のwxライブラリ使用時 : 1,611,264 bytes コンパイラは CodeBlocks付属のMinGW なお、今回は、>>719-720 のような不具合を回避するため、RegExや、png,jpeg,tiff,zlib などはconfigureで有効にしておいた。そうすると>>720の最初のヘッダファイル問題は 消えたので、何か良いことがあるかと思ったから。ただし、様子を見るとそれは必要なかった かも知れない。サイズ縮小のためには disable にすべきかも。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/729
731: デフォルトの名無しさん [sage] 2014/09/02(火) 22:46:11.97 ID:TmMSlGm8 cygwin版のMinGWと、cmd.exe 版のMinGWって結構違うような気がしてきた。 Makefileなんかもcygwin版だと/cygdrive/c/xxx/yyy/zzz の形式になっている のに対し cmd.exe版は c:\xxx\yyy\zzz になっているらしい。 また、コンパイラに -I 指定したパスなんかも同様の違いがあるらしく、 configureが作ったMakefileは、cygwin版MinGW用で、 cmd.exe版のMinGWでは、#inclde "wx/setup.h" のパスが探せなかったり する。 build, host, target の指定は、全て mingw を指定していたのだから、 cygwinが入り込む余地は無かったはず。これは、configure.inか、 Makefileのどちらかを自前で修整する必要がありそう。 さらに、makeが(?) process_begin: CreateProcess(NULL, sh xxxxxx, ...) failed. というエラーを出すことがあり、その原因を探る必要もある。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/731
733: デフォルトの名無しさん [sage] 2014/09/02(火) 22:56:38.09 ID:TmMSlGm8 cygwin版のMinGWと、cmd.exe 版のMinGWって結構違うような気がしてきた。 Makefileなんかもcygwin版だと/cygdrive/c/xxx/yyy/zzz の形式になっている のに対し cmd.exe版は c:\xxx\yyy\zzz になっているらしい。 また、コンパイラに -I 指定したパスなんかも同様の違いがあるらしく、 configureが作ったMakefileは、cygwin版MinGW用で、 cmd.exe版のMinGWでは、#inclde "wx/setup.h" のパスが探せなかったり する。 build, host, target の指定は、全て mingw を指定していたのだから、 cygwinが入り込む余地は無かったはず。これは、configure.inか、 Makefileのどちらかを自前で修整する必要がありそう。 Makfileの / を \ で置換して、/cygdrive/x/ を x:/ にしてみたら結構 行ける。途中、pch でファイルにアクセス拒否で書き込めないと言われるが、 もう一度 make すると、何事も無かったように続行する。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/733
734: デフォルトの名無しさん [sage] 2014/09/02(火) 22:57:58.06 ID:TmMSlGm8 >>732 wx アプリのサイズダウンの仕方関連なんだけど。 http://mevius.5ch.net/test/read.cgi/tech/1270793556/734
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.049s