[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 01/06 13:57 / Filesize : 237 KB / Number-of Response : 832
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Cygwin + MinGW + GCC 相談室 Part 3



1 名前:デフォルトの名無しさん [2007/04/30(月) 23:52:47 ]
Windows上で動作するフリーの開発環境 CygwinとMinGWに関する相談スレッドです。

過去スレ:
cygwin + mingwn + gcc 相談室 Part2
pc11.2ch.net/test/read.cgi/tech/1126103347/
cygwin + mingwn + gcc 相談室
pc8.2ch.net/test/read.cgi/tech/1058134693/

関連サイト:
Cygwin www.cygwin.com/
MinGW www.mingw.org/

関連スレッド:
GCCについて part7
pc11.2ch.net/test/read.cgi/tech/1145357824/
【激遅】AppleGCC【絶望】
pc11.2ch.net/test/read.cgi/tech/1173267844/


543 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 10:17:09 ]
ん? ck違い!? とりあえずサンクスコ

544 名前:デフォルトの名無しさん [2008/02/23(土) 09:23:36 ]
浮動小数点演算を行なうルーチンをコンソールアプリ(main関数)から呼んだときと
Win32 API で書いた GUI アプリから呼んだときとで計算結果が違うという問題に
悩まされています。どなたか解決策をご存じないでしょうか。

問題を再現する、できるだけ小さなプログラムを作りました。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6078.zip
付属の Makefile は MinGW (GNU make)用です。
test1.exe(コンソールアプリ)と test2.exe(GUI アプリ)をビルドして実行します。
どちらも init.c の initialize() を呼び出します。
initialize() は double 型の配列 x を初期化する関数です。
計算結果を見るために x[5] と x[6] をカレントディレクトリの output.txt に書き出しています。
gcc version 3.4.5 (mingw special) では以下のようになりました。

test1.exe
x[5] = 4.7474747474747475e-001
x[6] = 4.6969696969696967e-001

test2.exe
x[5] = 4.7474747474747475e-001
x[6] = 4.6969696969696972e-001

同じルーチンを呼んでいるのに x[6] の値が異なります。x[5] は一致しています。

比較のために VC++ Toolkit 2003 (nmake.exe) 用の Makefile.vc も入れておきました。
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
でコンパイルしたところ2つのプログラムの計算結果が配列 x の全要素について一致しました。
MinGW (gcc) でコンパイルしたときの test2.exe の計算結果と一致しています。
すなわち test1.exe の計算結果がおかしいようです。

どなたか解決策をご存知の方がいらっしゃいましたらご教示下さい。よろしくお願いいたします。

545 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 09:53:13 ]
面倒だからソースは見ていないけど、どちらかはFPUで計算を行いどちらかはSSEで計算を行なっていると思われる。
コンパイルオプションで強制できるから、必要なら強制すればいい。
但し、doubleの精度を超えた領域の話なのでどちらも間違っているとはいえない。

546 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 09:55:30 ]
./test1
4.7474747474747475e-001
4.6969696969696967e-001
./test2
4.7474747474747475e-001
4.6969696969696967e-001

gcc version 4.1.2

ごめん、役に立てそうも無いw
とりあえずmap出力してdiff取ってみたらどうか

547 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:01:53 ]
アセンブリ出力を見るだけだろ。常考

548 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:17:20 ]
同じになっちまった。
.gcc version 3.4.5 (mingw special)
/test1
cat output.txt
4.7474747474747475e-001
4.6969696969696967e-001
gcc -o test2.exe -mwindows test2.c init.o
./test2
cat output.txt
4.7474747474747475e-001
4.6969696969696967e-001

gccオプションに--save-temps
しかし、同じ.oファイル使ってるから意味ないか。

fprintf(fp, "%hX\n", x[5]);
fprintf(fp, "%hX\n", x[6]);
これ出力しても結果異なるよね?

まぁ、ollydbgあたりでステップ実行すれば原因はわかるかと思う。

549 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:20:48 ]
そういえば、全然関係ない話だけど
MinGWのprintfで、%hhXとかうまく機能しない原因知ってる人いない?

550 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:00:51 ]
msのcランタイムがc99対応じゃないから

551 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:19:49 ]
msのランタイムって、FPUの精度を固定していないか?
>544はもう一回動かしてもtest1のx[6]は違う値のまま?



552 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:01:31 ]
15桁目まで同じだからdoubleの精度としては問題ない。

553 名前:549 mailto:sage [2008/02/23(土) 12:03:17 ]
C99以前ではhhxって使えなかったんだ。
知らなかった。

554 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:18:37 ]
x86のFPUは、80ビット精度と64ビット精度が存在する。
SSE2は64ビット精度。
とかそのへんの問題かな?

>>551に一票。

浮動小数点演算の検算で精度気にしすぎると禿げるぞ。
ε使えε

555 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:55:41 ]
テキストで出力すると計算の問題なのか出力関数の問題なのか分からんな。
バイナリで出力(あるいは16進ダンプ)してみて
どうなるかチェックした方がいいと思う。

例えば
fprintf(fp, "%.16e\n", x[5]);
これを
output(fp, x[5]);
にして、output を別翻訳単位で下のように定義してみたらどう?

void output(FILE *fp, double value)
{
 union {
  double value;
  char array[sizeof (double)];
 } dc = { value };
 int i;

 for(i = 0; i < sizeof (double); ++i) {
  fprintf(fp, "%02X ", dc.array[i]);
 }
 fputchar('\n', fp);
}

556 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:56:53 ]
_controlfp あたりでぐぐれ

557 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:05:31 ]
VCとgccのデフォルトのFPU計算精度は異なるらしい
homepage1.nifty.com/herumi/prog/prog90.html
_controlfpでいじると同じ精度にできる

558 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:11:46 ]
おー、それだそれだ、思い出した。

559 名前:544 mailto:sage [2008/02/25(月) 14:04:07 ]
皆さまコメントありがとうございました。>>556-557の方法で解決いたしました。

使用していた Windows 環境では MinGW でコンパイルしたコンソールアプリは 53 ビット、
MinGW でコンパイルした GUI アプリと VC++ Toolkit 2003 でコンパイルした両アプリは
64 ビットの演算精度を用いていたようです。

別の Windows 環境で試したところ MinGW でも両アプリとも同じ計算結果になりました。

コンソールアプリを MinGW でコンパイルすると演算精度が 53 ビットになる環境がある、
確実を期すなら  _controlfp を使え、ということですね。

髪がすこし減ってしまった気がします。本当にありがとうございました。

560 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 14:29:41 ]
つーか、doubleの精度以上の処を云々すると禿げるよ。
どうせ微小誤差が付き纏うんだから適当な桁で丸めて表示するとかしないと。

561 名前:544 mailto:sage [2008/02/25(月) 15:57:08 ]
>>560
おっしゃる通りです。

今回の件が気になってしまったのは、シミュレーションコードのデバッグ中だったためです。
実行環境やコンパイラが違ったら気にしないところですが、同じ環境で同じオブジェクトコードに
同じ入力データを与えているにも関わらず計算結果が違うことにとまどってしまいました。
原因はdoubleの範囲を越えた部分の誤差でしたが、この問題を調べるきっかけになった
シミュレーション結果の違いはもっと有意な差だったので看過できませんでした。

育毛にはげみます。



562 名前:554 mailto:sage [2008/02/25(月) 21:54:36 ]
>>561
> シミュレーション結果の違いはもっと有意な差だったので

俺は予言する
もまいは禿げる。

肝心のアルゴリズム、あるいはテストベクタが草ってんじゃない?

563 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:13:26 ]
>>561
IEEEに準拠するように80bitではなく強制64bitにするオプションがあったはずだが

564 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:18:47 ]
>>563
>556-559

565 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 14:03:31 ]
そんなあなたを禿増してあげましょう

566 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 02:29:06 ]
>>541 発見しますた
ttp://sohda.net/cygwin/dist/mirror/www.geocities.jp/meir/cygwin_ck/

567 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 09:16:50 ]
OS再インスコしてdevcpp+SDLで以前のソースコンパイルしたらWinMain@16なエラーが('A`)
int main(ryから始めてるし-mwindowsも付けてるのに
cygwinでもインスコすれば変わるかなあ

568 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 10:14:40 ]
-lSDLmain付け忘れ&-l順番ミスでしたサーセン
SDL外したらコンパイル通って、sdl-config見てやっと思い出した

569 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:59:52 ]
相談じゃなくて雑談になるんだけど
g++4.3.0をビルドしてみたんだけど、g++のbinが460,475ってでかくね?
cygwinのインストーラからのg++3.4.4は96,789、verうpとかモジュール化とか考えてもねぇ。
とか思いながら動作テストで↓コンパイルしたら、2,339,843、メガってどうなの。(ちなみに3.4.4でも477,682、g++4.3.0binよりでけぇ
#include <iostream>
int main(){return0;}
これって一体何がバイナリに組み込まれてるのか気になるんだけど、分かる人教えてー、誘導だけでもいいから。
ちなみに#include<iostream>だけ消したら3.4.4が7,673、4.3.0が10,915と小さくなった。(勿論gccじゃなくてg++で

570 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 18:09:00 ]
stripしろよ
ライブラリのdebug infoもな

571 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 18:30:48 ]
なるほど、どうもー。



572 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 07:07:47 ]
g++ 普通にビルドできるのか?
それならなんで Cygwin のパッケージは 3.4 のままいっこうに動かないんだろう。

573 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:33:08 ]
そのうち、stripしてもまだサイズがでかいがどうしてだ? といった
ググれば5秒で分かるFAQを聞きに戻ってきそうだ

574 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 14:25:42 ]
嫌味だけは一丁前でな

575 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 17:16:47 ]
>>572
できたよー
そういや俺も昔クロスコンパイラ作ろうとしたけどビルド出来なかった覚えがあるな
そんときは原因分からず仕舞いやったけど

cygwinのパッケージはlinuxでビルドされてるらしいから3.4で動かない原因は別なんじゃない?

576 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 06:08:53 ]
Windows XP SP2 上で Cygwin gcc 3.4.4 の MinGW モードで開発してるんですが、
システムメニューの項目を EnableMenuItem() を使ってグレーアウトさせようとしてもできません。

具体的には、ウィンドウプロシージャで WM_CREATE を受け取ったとき

 EnableMenuItem(GetSystemMenu(hWnd, FALSE), SC_MOVE, MF_GRAYED);

としても、システムメニューの「移動」がグレーアウトせず、有効なままになってしまいます(実際にウィンドウ移動もできる)。
MF_GRAYED を MF_DISABLED にしても同様で、システムメニューからウィンドウ移動ができてしまいます。

 DeleteMenu(GetSystemMenu(hWnd, FALSE), SC_MOVE, MF_BYCOMMAND);

ならば正常に機能し、項目が削除されるんですが…。

似たような環境で EnableMenuItem() によるシステムメニュー項目のグレーアウトができている方がいれば
方法など教えていただけないでしょうか?

577 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 06:18:22 ]
すみません。追記です。

 EnableMenuItem(GetSystemMenu(hWnd, FALSE), SC_CLOSE, MF_GRAYED);

は正常に機能し、システムメニューの「閉じる」とタイトルバーの×ボタンがグレーアウトするようです。
となると「移動」とか「サイズ変更」がグレーアウト/無効化できないのは Windows API 自体の仕様なんですかね?
もしそうだったらスルーしてください。Cygwin + MinGW 環境固有の問題かと早合点してしまったので。

578 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:36:49 ]
Win32 API スレの管轄だろうな。
ま、それはともかく設定するタイミングが駄目だと思う。


ttp://msdn.microsoft.com/library/ja/jpwinui/html/_win32_getsystemmenu.asp?frame=true
>GetSystemMenu
>
>状況によって、システムはウィンドウメニューの標準的なメニュー項目の一部を自動的に淡色表示にします。
>アプリケーションは、どのメニューも表示されていないうちに WM_INITMENU メッセージに応答することにより、
>メニュー項目を独自に選択したり淡色表示にすることができます。

ということで、WM_INITMENU でやればいいと思う。っつーか、普通のメニューでも項目の無効化等はそこでやると思うんだけど。

579 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 13:20:29 ]
>>578
スレ違いの質問にお答えいただいて恐縮です。
仰る通り WM_INITMENU を受け取ったときに設定することで「移動」「サイズ変更」もグレーアウトさせることができました。

ただし、WM_INITMENU メッセージでは wParam に対象メニューハンドルが格納されるらしいのですが、
システムメニューに関してはこれは当てはまらないようです。なので、

 if(wParam == (WPARAM)GetSystemMenu(hWnd, FALSE)){
  ...
 }

などとすると if 文の中身は決して実行されないようです。
よって、システムメニューを設定するだけなら wParam は無視すべき、ということみたいです。

580 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 13:46:42 ]
WM_INITMENUPOPUPなら見分けがつくんでない?

581 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:43:40 ]
>>580 アドバイスありがとうございます。やってみましたが、

 if(HIWORD(lParam) == 1){
  ...
 }

というテストはうまくいくものの、wParam にはシステムメニューのハンドルが入っていないようです。
ですので、EnableMenuItem() などに渡すメニューハンドルはやはり GetSystemMenu() を使って自前で取得しなければ
ならないようです。
また、WM_INITMENUPOPUP を受け取ったときに EnableMenuItem() を呼ぶと、タイトルバーから初めてシステムメニュー
を呼び出したとき、システムメニューの表示位置が若干上にずれて、タイトルバーを覆い隠すような形で出てくるようです。
まあ2回目以降は正常に戻るので、気にするほどのことではないかもしれないですが…。
あと、WM_INITMENU の場合は対象がシステムメニューかどうか見分けが付かないので、自分で初回スイッチのような
ものを用意して対処する必要がありそうですね。

それと、さっき色々試していて気が付いたのですが、WM_INITMENU または WM_INITMENUPOPUP を受け取ったときに
EnableMenuItem() する方法だと、タスクバーを初めて右クリックしたときに項目が無効にならないようです。
2回目以降、もしくは初回であっても事前にタイトルバーからシステムメニューを表示させていれば EnableMenuItem()
の設定が反映されるんですが…。

調べてみたところ、タスクバーが右クリックされたときには非公開メッセージ 0x313 が送られてくるとの情報があったので、
(参考: www.hey-to.net/ML-archive/vcppML/1999/msg03694.html)
0x313 を捕捉し、そのハンドラで EnableMenuItem() などの設定を行い、
さらに DefWindowProc() にメッセージを処理させればよい…みたいです。

>>576の環境でしかテストしていないのであまり自信がないですが、これだと一応タスクバー初回右クリック時も正しく
項目が無効化されたシステムメニューが表示されます。
とはいえ、非公開メッセージに依存するのも微妙な感じなので、いっそ WM_CREATE のハンドラで無効にしたい項目を
DeleteMenu() してしまうのが一番簡単かもしれないですね。

長文失礼しました。Windows って難しいです。



582 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:22:25 ]
>>581
Win32 API スレいって揉まれてくるといい

583 名前:デフォルトの名無しさん [2008/04/01(火) 13:51:30 ]
cygwinでopenmpは使える??

584 名前:デフォルトの名無しさん [2008/04/01(火) 18:57:24 ]
>>581
これじゃダメなんかい?

DWORD dwStyle = GetWindowLong(hWnd, GWL_STYLE) & ~WS_SIZEBOX;
SetWindowLong(hWnd, GWL_STYLE, dwStyle);


585 名前:デフォルトの名無しさん [2008/04/03(木) 15:23:40 ]
windows2k MinGW を入れたいのです
MinGWインストーラがネット無いので使えません
ソースフォージからどれを落とせば良いでしょうか
またそれは全て同じフォルダに上書きで良いでしょうか
binフォルダなどかぶっているものがおおいんです
使いたいのはC、C++、SDL、OpenGLです
パスは適当に通そうと思っています

586 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:14:48 ]
MinGWインストーラはDownload Onlyを選べば、落とすだけを選択できるぞ
あとは上書きで桶

587 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:18:07 ]
>>586
おおありがとう!
じゃあ遠かったHelloWorldも近づきますノシッ

588 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 13:50:57 ]
ちょっとお聞きしたいのですが、mingwでは-Iオプションは使えないのでしょうか?
g++ --help でリストに出てこないのです。
しかしg++ -I とすると argument to `-I' missing のような感じで、unrecognize option `-j' みたいな感じではでてこないので、使えるような気もするのですが・・

589 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 14:32:18 ]
>>588
g++ -v --help で出てきませんかな。
正直 gccのオプションはかなり多いので g++ --version でバージョンを確認してから
ぐぐるなり GCC online document www.gnu.org/software/gcc/onlinedocs/
から探すなりしてマニュアルを読んだほうがよいかと思います。

590 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 14:42:10 ]
>>588
使える

591 名前:588 mailto:sage [2008/04/11(金) 15:00:25 ]
>>588さん
>>580さん

レスありがとうございます。
使えるのですか。
-I使う場合は、Windows用に
-IC:\Program Files\...
みたいな感じで書けばよいのでしょうか?

上記の感じでやってみたのですが、うまくいかなく・・



592 名前:588 mailto:sage [2008/04/11(金) 15:01:37 ]
>>588さん→>>589さん
>>580さん→>>590さん


593 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 15:06:08 ]
>>591
スペースが入ってるみたいだけど...

594 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 15:21:52 ]
>>591
パスにスペースを含む場合は "" で囲むと聞いたことがあるけど
-I"C:\Program Files\..." ではだめかな

595 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 15:48:56 ]
分割されなきゃいいのだから、空白をエスケープするだけでもいいかも。
それはさて、ディレクトリ区切りのバックスラッシュってエスケープする必要あるんでない?

596 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 16:17:38 ]
スラッシュにした方がいいな
-l"C:/Program files/..."

ていうか相対パス指定できるように環境を整えた方が
のちのち便利だと思う

597 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 17:43:01 ]
レス下さった方々、ありがとうございます。

-l"C:/Program files/..."
こんな感じでとりあえず目的のコンパイルはできるようになりました。多謝です。

相対パス指定のための環境構築について、検索してみたのですが、それっぽいのが出てきませんでした。
スレ違いで申し訳ないのですが、よろしければどなたか解説してるサイト教えて頂けると幸いです。


598 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 18:01:43 ]
msysかcygwinをいれちゃう。
あなたならおそらくmsysのほうがおすすめ。

ふと思ったがmingw単体で使ってる人ってけっこういるんだろうか。



599 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:46:30 ]
あっちの関連スレにここがあったから貼り返し。

Cygwin使っている人いますか? その18
pc11.2ch.net/test/read.cgi/unix/1184677144/

600 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:11:33 ]
>>598
俺々、俺だよ
msysはgccのsnapshotをコンパイルするときくらいしか使ってない

601 名前:デフォルトの名無しさん [2008/04/11(金) 22:17:04 ]
msysはUNIX系用に書かれたアプリをWindows環境で
makeや./configureするためだけにあるようなもんだから
純粋なWindowsアプリ作るときは、いらんだろ。
それともWindowsアプリ書くときも、mv や cp や sh コマンドを使うヤツがおるのか?



602 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 22:28:16 ]
そこまで使うような奴だったらCygwinを入れているだろうしな。

603 名前:597 [2008/04/11(金) 23:26:58 ]
レスありがとうございますー。
なるほど、msysからなら相対パスで指定できたのですか。

実はmsysは導入してるんですが、今コンパイルしようとしてるソースがeclipseのプロジェクトのもので、
eclipseのbuildセッティングからオプション指定しなければいけないが気がするのです。

eclipseからのオプション指定付きのコンパイルは、絶対パスでですが成功したのでとりあえず解決しました。
eclipseからも相対パスで指定できたら便利なのかもしれませんが、スレ違いなのでここではやめておきます。

色々ご教示くださりありがとうございましたm(_ _)m


604 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:11:57 ]
よく分からないんだが、prefix を適当なマクロ名(たとえばSRC_DIR)で定義しておいて
-I"$SRC_DIR/include" とか書けばいい、という話?
Makefile内ではダブルクオートで囲んであってもマクロ展開が行なわれる。
ダブルクオート付きのまま実行されるので SRC_DIR=C:/Program Files/GnuWin32 のように
スペースを含んでいても無問題。

605 名前:デフォルトの名無しさん [2008/04/12(土) 15:21:51 ]
>>601-602
俺はWindows環境でMinGWを使ってプログラムを書くときはいつも
Makefileを書いてるからmsysがないと不便かもー。
exe単体(dll不要)で実行できるのがMinGWのいいところだから
俺的には MinGW + msys = Cygwin ではない。

606 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:54:08 ]
>605
-mno-cygwin つければ cygwin1.dll 使わなくなるんだから、MinGW + msys ⊂ Cygwin とか混ぜっ返してみる。

607 名前:デフォルトの名無しさん [2008/04/12(土) 17:58:19 ]
>>606
なるほろ。どうもです。

608 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:39:40 ]
全く混ぜっ返せてない気がするのは気の所為だろうか。

609 名前:デフォルトの名無しさん [2008/04/12(土) 23:38:33 ]
>>605
nmake 使った事無いの?

610 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 02:43:01 ]
なぜそこでnmakeがでてくるんだ?

611 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 03:50:56 ]
>>609
聖徳太子って知ってる?



612 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 04:06:39 ]
知ってる。
人に非ずな美人な子供で同性愛者な上にマザコンな皇子でしょ?

613 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 05:10:58 ]
知ってる。
突然びっくりするぐらいブチ切れる人でしょ

614 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 15:09:40 ]
知ってる。
100万人が同時にしゃべっても聞き分けられた人でしょ

615 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 16:14:52 ]
それってさ
聖徳太子が聞き分けられてる
と気づいた人のほうが数段上だよね

616 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 16:58:47 ]
みんなして同じことしかいってなかったんだよね

617 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:11:04 ]
MinGWに付いているwindres.exeは
windres --language=0411 ファイル名.rc
とすればShift-JISのrcファイルを読めるけど、UTF-16のrcファイルは読めますか?
languageオプションに指定できる値の情報がどこにも無くて、UTF-16に対応してるかどうか分からない…
(ちなみにVC9のrc.exeは文字コードを自動判定してるようでShift-JISもUTF-16もオプションなしで読めるみたい)

618 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:35:39 ]
windresのソースのこの辺り↓を見るしかなさげ?
sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/winduni.c?rev=1.10&cvsroot=src
sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/winduni.h?rev=1.7&cvsroot=src
なんだかコードページしか指定できないように見える・・・。

619 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 18:28:10 ]
G++でのコンパイルやリンク実行時に自分で作ったバッチファイルを引数として噛ませたいのですが、どのように書けばできますでしょうか??
どなたかご教示頂けると幸いです。


620 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 18:29:40 ]
> G++でのコンパイルやリンク実行時に自分で作ったバッチファイルを引数として噛ませたい

詳しく

621 名前:619 mailto:sage [2008/04/14(月) 18:35:55 ]
すいません、Windowsのコマンドラインから使う場合の話です。

>>620さん
レスありがとうございます。

例えば、
g++ sample.o -lC:/aa.. -lC:/bb.. -lC:/cc.. -lC:/dd..
のようにインクルードファイルを呼び出してリンクしたいとき、
-lC:/aa.. 以下を毎回打つのは面倒なので、inc.batのようなバッチファイルにまとめてしまい

G++ sample.o inc.bat

のような感じでリンクできるようにしたいのですが、
上のような書式では失敗するので、inc.batの前になにか必要なのかな??という疑問です。




622 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 18:56:36 ]
つMakefile

623 名前:619 mailto:sage [2008/04/14(月) 19:05:56 ]
レスありがとうございます。

すいません、makefileがどんなものかは大体分かっているのです。
今回はバッチでどうしてもやりたい事情がありまして・・


624 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 19:11:17 ]
環境変数使うってのは?

625 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 19:12:55 ]
もしくは、$1とかでファイル名渡すとか?

626 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 19:55:21 ]
>>623
SET CXX=B:\MinGW\bin\g++
SET CFLAGS=-IB:\hoge\include -IB:\fuga\include
SET LDFLAGS=-LB:\hoge\lib -LB:\fuga\lib -lhoge -lfuga
%CXX% %CFLAGS% %LDFLAGS% %*
みたいなのをmygcc.batに保存して
> mygcc sample.cc
でコンパイル。オプションとかは適当に追加してくれ。
バッチファイルも書けなくてC++でプログラム書けるのかが心配だが…

627 名前:デフォルトの名無しさん [2008/04/14(月) 22:31:52 ]
>>619
ふつうにバッチファイルじゃいかんの?

unko.bat の中身はこう書く
g++ %* -lC:/aa.. -lC:/bb.. -lC:/cc.. -lC:/dd..

で、コンパイルはこう
C> unko sample.o

これも事情があってダメなの?

628 名前:619 mailto:sage [2008/04/14(月) 22:55:52 ]
レスありがとうございます。
なるほど、バッチの中にg++も入れたりできるんですね。

ただ、それだとやっぱりだめで、事情っていうのが、wxWidgetsっていうGUIツールキットを使っていて、それを使ったリンク時に

g++ sample.o -LC:/wx/(以下略)...

みたいにするんですが、どうもWindows版だと

g++ -LC:/wx/(以下略)... sample.o

みたいに、オプションがインプットファイルより前にくるとエラーになるみたいなんです。

makefileを使わないと言っても、eclispeのexcutableプロジェクトなので、makefileは勝手に生成される=使っています。
勝手に生成されるので自由には編集できない、ってことです。
で、そのmakefileのオプションの部分だけをバッチにしたいんです。
直接全部手書きでもよいのですが、かなり長いのでスマートじゃないなぁと思いまして・・

>>バッチファイルも書けなくてC++でプログラム書けるのかが心配だが…
初心者なので大目に見てください(^^;)

環境変数ってのはなんの環境変数でしょうか??


629 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:24:07 ]
>>628
eclipseにコンパイル、リンクオプションを設定するところがあるはずだから探せ。
-LC:/... とリンク先ディレクトリ指定のオプションだけのように見えるが、本当はリンクするライブラリもその「バッチ」とやらに書いてるだろ。
それだと.oより先にあったらダメだ。
それはwindowsだろうがなんだろうがダメ。
.oから呼ばれている関数をリストアップして、その後その関数をライブラリからワンパスで探すから。


630 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:27:21 ]
>>628
>>627 を試してみたのか?
バッチに渡した引数は %* の位置に展開されるのよ?

>なるほど、バッチの中にg++も入れたりできるんですね。
とかいう時点でバッチが何か理解してないと思われ

631 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:39:07 ]
野球で振り回すあれでしょ?



632 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:13:11 ]
>>630
バッチってバッチファイルのことじゃなくて、ライブラリのファイル名を羅列したファイルのつもりなんだろう。


633 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 03:16:00 ]
チラシの裏
MinGWでコモンコントロール使うなら
#define _WIN32_IE 0x0300
とか必須

634 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 03:37:30 ]
チラシの裏
ncurses5.6 cygncurses-8.dll 文字化け 日本語
→ use_legacy_coding(2) 追加

635 名前:デフォルトの名無しさん [2008/04/15(火) 10:11:30 ]
EIPに入ってるアドレスから共有ライブラリやEXEのベースアドレスを調べたいのですが
windowsのPSAPIを使うやりかたで良いのでしょうか?
cygwinではこう書くみたいなやりかたはありますか?

636 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:35:20 ]
Win32環境にCygwinかMinGWのどちらかを入れようと迷っているのですが、
何か判断基準になるものはありますか?

637 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:39:32 ]
両方入れて、自分で比較した方がいいんじゃないの?

638 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 19:49:07 ]
基本MinGWでいいと思う
別の用途でCygwin使ってる人はそのままCygwinを使う

639 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:13:21 ]
CygwinはUnix環境として使うなら便利だけど、窓の開発したいだけなら開発環境に組み込まれてたりするMinGWのほうがいいんじゃね?

640 名前:628 mailto:sage [2008/04/16(水) 23:44:28 ]
レス下さった方々ありがとうございますm(_ _)m
お礼遅れてすいません。

>>lipseにコンパイル、リンクオプションを設定するところがあるはずだから探せ。
オプション設定するところあるのですが、-mwindowsというのを設定しなくてはいけなくて、それ用のフォームがなくて困ってたのですが、全部まとめてかけるところが見つかってそっちに書くことで解決しました。
>>/... とリンク先ディレクトリ指定のオプションだけのように見えるが、本当はリンクするライブラリもその「バッチ」とやらに書いてるだろ。
その通りです!
>>それだと.oより先にあったらダメだ。
それはwindowsだろうがなんだろうがダメ。
.oから呼ばれている関数をリストアップして、その後その関数をライブラリからワンパスで探すから。
そうだったんですか!知りませんでした。貴重な情報ありがとうございます。
>>627 を試してみたのか?
バッチに渡した引数は %* の位置に展開されるのよ?
これも知りませんでした汗
そうだったのですか。なるほど!
ありがとうございます。
>>バッチってバッチファイルのことじゃなくて、ライブラリのファイル名を羅列したファイルのつもりなんだろう。
そんな感じです(^^;)
>>MinGWでコモンコントロール使うなら
>>#define _WIN32_IE 0x0300
>>とか必須
>>ncurses5.6 cygncurses-8.dll 文字化け 日本語
>>→ use_legacy_coding(2) 追加
ありがとうございます!


641 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:41:46 ]
>>640
%* や、バッチファイルのその他の機能の説明を読んだ方がよさそう。
Windowsの「スタート」ボタン→「ヘルプとサポート」
→検索窓に「バッチ」と入力して検索→「バッチ パラメータを使用する」
→検索窓に「シェル」と入力して検索 →「コマンド シェルの概要」




642 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 03:40:54 ]
1.cygwin.batから起動したbash上で「ls --color」を実行→color表示。うっわ見づらいなコレ
2.「ls」を実行→あれ、color表示のままだぞ?
3.「ls --color=none」を実行→うむ、color表示じゃなくなった
4.「ls」を実行→あれ、やっぱcolor表示のままだぞ・・・?
5.「source ~/.bashrc」を実行後、「ls」を実行→よし、今度こそcolor表示じゃなくなった
6.「exit」を実行後、cygwin.batからbashを起動し「ls」を実行→ひいい、color表示のままだぞ!?
7.(´・ω・`)

*cygwin.bat----------
@echo off
C:
chdir C:\cygwin\bin
bash --login -i

*.bashrc(インスト時に手を加えたところだけ抜粋)------
export JLESSCHARSET=japanese-sjis
alias ls="ls -F --color=none --show-control-chars"
export LANG=ja_JP.SJIS

他のCygwinプロセスは起動してません。
.bashrcをちゃんと読んでない気がするのですが、lsのデフォルト動作を非カラー表示に
戻す方法をご教授いただければ幸いです。

643 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 04:21:48 ]
>>642
alias 打って実際の登録状況を見るとか。
set -x して実際に起動されたプロセスの引数を確認するとか。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<237KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef