トップページ⇒tech
1001コメント311KB

cygwin + mingwn + gcc 相談室 Part2

■ このスレッドは過去ログ倉庫に格納されています
00019802005/09/07(水) 23:29:07
Windows上で動作するフリーの開発環境 CygwinとMinGWに関する相談スレッドです。

※ MinGWが正式名称です。スレタイはバグでもtypoでもなく仕様です。

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

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

関連スレッド:
GCCについて Part6
http://pc8.2ch.net/test/read.cgi/tech/1121146723/
MinGWを使おう
http://pc8.2ch.net/test/read.cgi/tech/1042611308/
0159デフォルトの名無しさん2005/11/29(火) 20:43:57
>>158
Patameterlessって何だ
0160デフォルトの名無しさん2005/11/29(火) 20:55:04
あのな、エラーにしてもプログラムにしても、formに手書きするな。
コピペしろ。でないとお互いのためにならん。

>>158の内容に関してはコレ。
ttp://kobesearch.cpan.org/htdocs/perl/IO.pm.html#deprecated
0161デフォルトの名無しさん2005/11/30(水) 18:33:05
最近gcc使い始めたのですが、
gccってUnicodeリテラル( L"ふーばー" みたいなの)をまともに使えないのでしょうか。
マルチバイト文字のリテラルだと確実にヘンなことになります。
一度 char の配列に入れておいてから mbstowcs で変換するとうまくいくのですが。
これはそういうもんだと思ってあきらめるしかないんですかね?

※上記は gcc 3.4.4 で確認
0162デフォルトの名無しさん2005/11/30(水) 19:47:01
>>161
L"\u3075\u30fc\u3070\u30fc"
みたいにUnicodeエスケープして gcc -std=c99 や g++ とかなら多少は動いたかもしれない…

# gcj だと --encoding=Shift_JIS とかで済むのだが…
01631612005/11/30(水) 20:47:47
>>162
ありがとうございます。

> L"\u3075\u30fc\u3070\u30fc"
> みたいにUnicodeエスケープして gcc -std=c99 や g++ とかなら多少は動いたかもしれない…

gcc と g++ の両方で試してみましたが、文字列の末尾の文字が化けてしまうようです。
これでうまくいくならフィルタ書こうかとか思ったのですが…
あきらめて MBCS で書くことにします。
0164デフォルトの名無しさん2005/11/30(水) 21:45:56
>>161
>>147-151あたりでも触れてるが、gccはASCIIをUTFにするのと同じやり方
(つまり1バイト毎の頭に\0を付ける)でマルチバイトリテラルも処理してしまうので、
L"〜"はマルチバイト環境では使い物にならない。

VC++あたりは元々マルチバイト対応してるから普通に使えるんだけどね。
01651612005/11/30(水) 22:10:21
>>164
あ、すぐ上でガイシュツだったんですね。すみません。

VC++ では _UNCODE を define して L"〜" (実際は _T("〜") ) で書くのに
慣れているので、いまさら MBCS でやりたくないとか思いましたが、仕方ないですね。
0166デフォルトの名無しさん2005/12/01(木) 09:10:33
-finput-charset -fexec-charset でどうにかなるもの?
とりあえず cygwin で
 g++ -finput-charset=cp932 -fexec-charset=UCS-2
とかしてみたけど、 windows.h の extern "C++" がコンパイルできなくてテストできない。
01671612005/12/01(木) 13:03:32
>>166
それはすでに試していましたが、どうにもなりません (もちろん、C で書けばコンパイルできます)。
-fexec-charset=UTF-16 でも同様です。
どの方法を使っても化けかたが同じなので、いかなる場合でも
>>164 さんが書かれている妙な処理方法は変わらないようです。
関係ないですが、ソースのコードページがどうであれ、内部的には UTF-8 で持ってるっぽいですね。

仕方ないのでこんなことしてみました。

 class _T {
  wchar_t *m_p;
 public:
  _T(const char *p) { int len = ::strlen(p) + 1; m_p = new wchar_t[len]; ::mbstowcs(m_p, p, len); }
  ~_T() { delete[] m_p; }
  operator wchar_t*() const { return m_p; }
 };

 ::_wperror(_T("ふーばー"));

バッファを余分に取りすぎる場合がありますが、短く書きたかったので。
01681682005/12/01(木) 16:41:37
教えてください。
cygwinを使用していて/bin/以下で
「ls -al」と打つと、
「drwxrwxrwx+」
という文字が出てきますが、
最後の「+」ってなんですか?
0169デフォルトの名無しさん2005/12/01(木) 17:08:20
コンソールに表示すると化けるんじゃないでしょうか?
マルチバイト文字のリテラルの処理はgccはちゃんとやってるみたいですが...
0170デフォルトの名無しさん2005/12/01(木) 17:27:56
>>168
スレ違い。
'+'はディレクトリに対して、その他の属性が指定されていると見なせることを示す。
どうやらcygwinの場合はNTFSの場合に'+'がつくようだ。
0171デフォルトの名無しさん2005/12/01(木) 18:34:41
>>169
マルチバイト文字は別に問題ない。
今話題にしてるのはUnicodeリテラルの問題。
0172デフォルトの名無しさん2005/12/01(木) 21:25:56
iconvを使ったプログラムをcygwin上で書いていて、それを-mno-cygwinでコンパイルしようとしたら
iconv.hが見つからないというエラーメッセージが出るようになってしまいました。

gcc -H test.c で見てみると、インクルード先がmingwに変わっているので
mingw用にiconvをインストールすればいいんだろうことはわかりますが、
それってどこで拾ってこればいいのですか?

0173デフォルトの名無しさん2005/12/01(木) 21:41:25
>>172
ソース拾ってきてmingw32用にコンパイルすればいいが…
面倒なら
ttp://cefiro.homelinux.org/resources/files/libiconv/
とかに落ちてるのを拾って使えばいい.
0174デフォルトの名無しさん2005/12/01(木) 23:49:51
>>173
助言助かりました。おかげで問題なくリンクまで出来ることを確認しました。
0175デフォルトの名無しさん2005/12/01(木) 23:57:04
cygwinとmingwでどれくらいの実行速度の差ができますか?
0176デフォルトの名無しさん2005/12/02(金) 01:38:15
ほとんどないです
0177デフォルトの名無しさん2005/12/02(金) 01:47:51
>>175
単に計算させるなら同じで差がでるのはAPI.
cygwinがエミュレーションしてるPOSIXなAPIを使った場合同等の処理をWin32 nativeなAPI
を使うのよりほとんどの場合遅くなる.どのくらい遅くなるかは使うAPI次第なので一概に
どのくらい速度差がでるとは言えない.
0178デフォルトの名無しさん2005/12/03(土) 23:43:52
質問お願いします。

バージョンの古いGCCで静的ライブラリ(lib***.a)を作ります。
より新しいGCCを使用してコードを書き、このライブラリとリンクすることを考えます。

GCCバージョン間のライブラリ形式の互換性によって、リンクができる場合と
そうでない場合があるらしいですが、それは、どこを調べればわかるでしょうか?

「GCC リンカ 後方互換性 ライブラリ
static library compatibility gcc version backward」 などで子一時間ぐぐってみましたが、
さっぱりわかりませんでした orz
よろしくお願いします。
0179デフォルトの名無しさん2005/12/03(土) 23:53:25
>
ABI GCC
0180デフォルトの名無しさん2005/12/04(日) 00:53:55
gcc(Cの部分)のABIは昔から変化してないよね、たしか。
g++は3の近辺に断絶があったと思ったけど。
前スレか、gcc関連のどっかのスレで読んだ覚えが。
01811782005/12/04(日) 09:38:23
>>179
>>180
なんとか調べれそうです。ありがとうございました。
0182デフォルトの名無しさん2005/12/05(月) 08:35:33
       __________
      /━━━━━━━━━ \
     |┃| ̄ ̄|. 〇 〇 [大月]┃|
     |┃| ̄ ̄|| ̄ ̄ ̄ ̄ ̄ ̄|┃| プオーン!!!
     |┃|__||______|┃|
     |┃               JR ┃|
     |┗━━━━━━━━━┛| \('A`)/ ミ     gccのコンパイル マンドクセ
     |   ━━ ━━ ━━.  |   ( )  ミ
     |     [中央.特快]    |   └└ミ
     |      \_/      .|
     |  〇     ━━━   〇  |
     |___________|
      │     │[=.=]|     |
      └─────────┘
0183デフォルトの名無しさん2005/12/06(火) 15:54:35
cygwinのコンソールアプリケーションででキーボードイベント(keyup, keydownなど)
の取得はどうやればいいのでしょうか?
0184デフォルトの名無しさん2005/12/06(火) 16:17:08
Win32コンソールにそんな概念あったっけ?
0185デフォルトの名無しさん2005/12/06(火) 23:34:22
>>183
WindowsMessageを扱いたいって意味なら、/dev/windows使うといいかも。使い方は
ttp://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20020827#p03
とか参考になるかと。
0186デフォルトの名無しさん2005/12/08(木) 01:22:37
>>185
ありがとうございます。キーボードを鍵盤に見立てた電子オルガンを作れ
という学校の課題がありまして、ノートのオンオフにキーボードイベントが
使えないかと思ったんです。
getch()だとオンは取れてもオフの取り方がわからなかったので質問した
しだいです。
今はGLUTのキーボード関連のコールバック関数を使っています。
01871472005/12/11(日) 13:17:07
L"日本語"
-finput-charset=cp932 -fexec-charset=cp932
でやっと通った・・・。ちゃんと内部的にもUTF16になってるし。
亀レスだけど、161さんは、-fexec-charset=cp932で通るんじゃないかな?
01881472005/12/11(日) 13:19:26
wchar_t ws[] = L"表示";
char mbs[] = "表示\0";
short *mbs_l = (short *)mbs;
int i;
setlocale(LC_ALL, "Japanese_Japan.932");

wprintf(L"%s\n", ws);
printf("%s\n",mbs);
for(i=0;ws[i] != L'\0'; printf("%hx ", ws[i++]));
printf("\n");
for(i=0;*(mbs_l+i) != 0; printf("%hx ", *(mbs_l+i++)));
return 0;

結果
表示
表示
8868 793a
5c95 a68e
0189デフォルトの名無しさん2005/12/11(日) 15:12:25
ほおー
リテラルも実は実装されていたのか。乙 >187
0190デフォルトの名無しさん2005/12/11(日) 15:40:44
>>187
なるほど…
gcc はどのバージョンでしょうか?
01911612005/12/11(日) 15:46:21
>>187
いえ、通りませんが。
gcc のバージョンを教えていただけませんか?
0192デフォルトの名無しさん2005/12/11(日) 16:05:26
>>191
187 じゃないけどね。
手元の cygwin g++ 3.4.4 では -finput-charset=cp932 -fexec-charset=cp932 で
まともに動いてるみたい。

>161 で言う「ヘンなこと」と、
>187 のオプションをつけても「通りません」っていうのを
もうちょっと具体的に書いてみると、何かわかるかも。
01931612005/12/11(日) 16:36:06
わかりました。_wperror だとダメなんです。

----
std::setlocale(LC_ALL, "Japanese_Japan.932");

wchar_t ws[] = L"表示";

::_wperror(ws);
::_wperror(L"表示");

std::wprintf(L"%s\n", ws);
std::wprintf(L"%s\n", L"表示");
----
-mno-cygwin -finput-charset=cp932 -fexec-charset=cp932 -fshort-wchar -D_WIN32_WINNT=0x0500 -D_UNICODE -DUNICODE -D_GLIBCXX_USE_WCHAR_T=1
でコンパイル

結果
----
表=: No error
表: No error
表示
表示
----
01941612005/12/11(日) 16:42:12
ちなみに、 _wperror だと「表示」のような '\' を含む文字列に限らず、
テストした限りではどんな文字列でも上記のように末尾が欠けます。

また同様に、wprintf ではどんな文字列でも問題ないようです。

_wperror は MSVCRT 固有なので引き渡しがうまくいっていないのかもしれません。
でも -mno-cygwin ですから、wprintf も MSVCRT 由来だと思うのですが…
01951472005/12/11(日) 18:54:57
本当だ。
でも、wprintfで表示できてるんだから、MBS定数->WS定数展開は出来てると思う。
単純にwperrorのせいかと。

>>149
これまた亀レスですが、wstring自体は使えますよ?
wcoutがワイド文字対応のC関数が足りていないため使えないというだけで。
int main(){
std::setlocale(LC_ALL, "Japanese_Japan.932");
wstring str = L"wstringテスト";
wprintf(L"%s",str.c_str());
}
01961612005/12/11(日) 23:50:39
>>195
> 単純にwperrorのせいかと。
あれからしばらくいろいろ試してみて、そんな気がしてきたところです(w
MBCS → mbcstowcs による変換 → _wperror に与える
でも同じ(まずい)状態になりました。末尾に文字列を連結する部分がうまくないのでしょう。
MBCS で言えばシングルバイト文字である文字だけで構成されている場合のみ問題が起きません。

他の非標準関数ではいまのところ問題を発見できていませんが、
MSVCRT 由来のものや Windows API では、なにか問題が起きることがあるかもしれません。
しかしgccのせいではないでしょう。

以前から -finput-charset=cp932 -fexec-charset=cp932 でのテストも
行っていたのですが、大半は _wperror を使っていたのが災いしました。
おかげで助かりました。どうもありがとう。
0197デフォルトの名無しさん2005/12/12(月) 23:16:29
うほ、いけるのか・・・試した人GJ
0198デフォルトの名無しさん2005/12/15(木) 13:07:49
g++ (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)
を使っているのですが

template <typename T> struct NumericTypeInfo {};
template <> struct NumericTypeInfo<int> { typedef long LongerType; typedef short ShorterType; };
template <> struct NumericTypeInfo<short> { typedef int LongerType; typedef char ShorterType; };
template <> struct NumericTypeInfo<long> { typedef long long LongerType; typedef int ShorterType; };

template <typename T>
T TestFunc(T val)
{
#if 0
NumericTypeInfo<int>::LongerType tmp = val; // これは大丈夫
#else
NumericTypeInfo<T>::LongerType tmp = val; // コンパイルエラーになる...
#endif
tmp << 8;
tmp >> 8;
return tmp;
}

これでコンパイルエラーになります。コンパイラのバグでしょうか?
0199デフォルトの名無しさん2005/12/15(木) 13:47:27
>>198
-NumericTypeInfo<T>::LongerType tmp = val; // コンパイルエラーになる...
+typename NumericTypeInfo<T>::LongerType tmp = val; // コンパイルエラーになる...
02001982005/12/15(木) 14:43:44
>>199
あ”〜!typenameが必要だったんですね!!
どうみても 鳥山「ヤムチャ…?」 状態です。
本当にありがとうございました。
0201デフォルトの名無しさん2005/12/21(水) 11:32:16
今までC中心で使ってきたのですが、
新たにJavaを勉強しようと思い、gcjを入れてみたのですが

gcj -C Sample.java
java Sample

としても動きません。Hellow World!を表示させたいのですが・・・
0202ペンギン2005/12/21(水) 13:34:05
cygwin上から startxコマンド実行 エラーメッセージ
giving up.
xinit: Connection refused (errno 111): unable to c
xinit: No such process (errno 3): Server error.

以上のエラーメセージの回避策、ご教授御願い致します。
0203デフォルトの名無しさん2005/12/21(水) 19:41:29
>>201
うちでは動きました。
Mingw GCC 3.4.2, VMはSunの1.5
0204デフォルトの名無しさん2005/12/21(水) 23:24:31
>>201
>>203
SunのVM使うならわざわざgcj使う意味ねえだろ…
javac や jikes 使っとけよ…
02052012005/12/21(水) 23:44:01
>>204
ありがとうございます

javac Sample.java

でやるとコマンドは認識されていませんと出るので
色々ぐぐって、gcjコマンドで試しにやってみたところ
コンパイルはできるのですが

java Sample

で実行すると

Exception in thread "main" java.lang.NoClassDefFoundError: Sample

と出て実行できません。.classファイルは出来ているのに・・・
0206デフォルトの名無しさん2005/12/21(水) 23:50:02
>>205
mainクラスの指定が必要だった気がする。

--main=クラス名
こんな感じで。
0207デフォルトの名無しさん2005/12/22(木) 00:14:41
>>201
javac を使えってのは Sun の JDK をインストールしてそこに入ってるjavacを使えってことだ…
この場合 gcj は必要ない.JDKのインストールや設定が載ってる解説本でも買って読め.

gcj を使って Sample.java をexeにして実行したいっていうなら
gcj --main=Sample -o Sample.exe Sample.java
って感じでコンパイル.できたら
./Sampple.exe
ってやって実行する.
02082032005/12/22(木) 19:41:51
>>204
動かないって言うから試しただけなんだけどな・・・

>>205
でもってjavac使うならここは板違い
0209デフォルトの名無しさん2005/12/23(金) 22:01:49
>>208
それを言ったらスレタイからするとcygwinのsetup.exeでインストールされるMinGW環境のGCCの話しか出来なくなる希ガス。
javac使うなら
ttp://www.02.246.ne.jp/~torutk/javaoncygwin/javaoncygwin.html
見れ。
まあJDK+NetBeans入れた方が手っ取り早いと思うが。
0210デフォルトの名無しさん2005/12/24(土) 17:14:17
エディタを追加インストールして、emacsを使えるようにしたんですが、
ほかの主な機能は使えるのに、「Ctrl-X Ctrl-C」でファイルを終了させる
機能だけうまくできません。どうしたらいんでしょう?
0211デフォルトの名無しさん2005/12/24(土) 18:41:18
うおっ -finput-charset=cp932 -fexec-charset=cp932 なんてあったんだ。
今までわざわざ自前のフィルター通してコンパイルしてたよorz
0212デフォルトの名無しさん2005/12/24(土) 19:04:17
>>210
set CYGWIN=tty
02132102005/12/24(土) 20:28:32
>>212
解決しました。ありがとうございます。
0214デフォルトの名無しさん2005/12/30(金) 22:26:58
cygwin で動く g++ は
#include <stdexcept> などの
ヘッダファイルをどこから読んでいるんでしょうか?
/usr/include/c++/3.4/stdexcept
とか見あたらないのですが・・・
0215デフォルトの名無しさん2005/12/30(金) 22:28:57
%find -name・・・ 使って自力で探しませう。
0216デフォルトの名無しさん2005/12/30(金) 22:33:17
/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/stdexcept
に見つかりました。/usr 以下しか find してませんでした。
0217デフォルトの名無しさん2005/12/30(金) 22:34:50
男はwin2kにVMware
0218デフォルトの名無しさん2005/12/30(金) 22:37:06
>>201
hellow world!ってどんな世界か
ぜひとも見てみたいので今度連れて行ってください。
0219デフォルトの名無しさん2005/12/30(金) 22:55:32
Hell low world で、日本の意
0220デフォルトの名無しさん2005/12/30(金) 23:08:04
>>219
オオ!ジャパンノ コトデスカ〜!
ツレテッテ クダサ〜イ!!!
0221デフォルトの名無しさん2005/12/30(金) 23:16:49
gcc でコンパイルしてもマクロ __GCC__ が定義されて
いないような気がするんですが・・・・

Visual C++ でコンパイルするときと切り替えるために、
_MSC_VER と __GCC__ を見ているのですが、
それじゃだめなんでしょうか・・・
0222デフォルトの名無しさん2005/12/30(金) 23:47:40
>>221
__GNUC__
0223デフォルトの名無しさん2005/12/31(土) 00:00:07
>>222 __GNUC__ でしたか・・
今 g++ -c -E -dD test.c ってやってみて確認しました。
__GNUG__ なんてものもあるんですね。
つーか、俺、なんで __GCC__ だって思いこんでたんだろ。
あと、この手のマクロって specs に書かれてるものもあるし
そうでないものもあるんですね。
0224__GNUG__2005/12/31(土) 00:01:36
The GNU C++ compiler defines this.
Testing it is equivalent to testing
(__GNUC__ && __cplusplus).
0225デフォルトの名無しさん2005/12/31(土) 16:08:33
CygwinでNTL(http://www.shoup.net/ntl/)を使えるようにしたいのですが
インストール方法が分かりません。
誰かご教授下さい。お願いします。
0226デフォルトの名無しさん2005/12/31(土) 16:58:32
configureもmakefileもついてるのに分からんとは・・・
0227デフォルトの名無しさん2005/12/31(土) 22:56:16
まともな脳味噌装備してなかったらそれでもわからんだろうさ
02282252006/01/02(月) 16:55:06
makeしようとしたら

>Colon expected
>Command syntax error

と出ました。
0229デフォルトの名無しさん2006/01/02(月) 17:22:02
インストールの仕方もしっかり書いてくれてるのに
0230デフォルトの名無しさん2006/01/03(火) 17:57:51
>> 225
げ、あっちとのマルチか。
一応言っとくと、ntl-5.4で試したが、doc/config.txt にやり方がちゃんと書いてある。
この手順でntl.aが生成できたし、make checkも動いたぞ。
02312252006/01/03(火) 20:59:19
解決しました。
0232デフォルトの名無しさん2006/01/04(水) 00:19:14
>>230
なんだ、225はマルチだったのか
0233デフォルトの名無しさん2006/01/05(木) 09:16:32
gcc の吐き出すエラーメッセージって

    Main.c:123: error...

のようなフォーマットなんですが、これを

    D:\AVR\Project1\Main.c(123) : error...

のようなフォーマットで吐き出させるようにできませんかね?
標準エラー出力を捕捉して sed などで書き換えるしかないのでしょうか?
0234デフォルトの名無しさん2006/01/05(木) 09:43:37
>>233
コンパイルするときの入力にフルパス入れれば、
と思ったけど、行番号のフォーマットまで変えるのか。
置換しる。
0235デフォルトの名無しさん2006/01/05(木) 14:36:14
いまring系のサーバってメンテナンス中?
0236デフォルトの名無しさん2006/01/05(木) 16:42:32
つ[ICMP]
0237デフォルトの名無しさん2006/01/08(日) 11:17:13
下記のコードをコンパイルしようとしたところ
リンカに _inet_lnaof がないと怒られてしまいました。

何が問題なんでしょうか……

gccのバージョンは3.4.4-1
glib-develのバージョンは1.2.10-3
を利用しています。

#include <stdio.h>
#include <arpa/inet.h>

int main() {
struct in_addr addr;
inet_aton("192.168.0.1", &addr);
inet_lnaof(addr);
}
0238デフォルトの名無しさん2006/01/08(日) 12:08:52
ライブラリが不足しているのでは?
0239デフォルトの名無しさん2006/01/08(日) 12:55:45
cygwin でサポートされてないだけっしょ。
あっちゃこっちゃで言及されてるよ。
0240デフォルトの名無しさん2006/01/08(日) 20:00:30
MinGW から UNLHA32.DLL を静的に利用したいのですが、
def ファイルの書き方がわかりません。
(MinGW(mingw-jp-20040224), UNLHA32.DLL(Ver 1.91g))

<やったこと>
(1) def 作成。
  >pexports UNLHA32.DLL > unlha32.def
(2) ライブラリ作成。
  >dlltool --def unlha32.def --dllname UNLHA32.DLL --output-lib libunlha32.a
(3) コンパイル。
  >g++ -c test.cpp
  >g++ test.o -o test -L. -lunlha32
 ちなみにソースはこのような感じ
  void foo(void)
  {
    HARC harc = UnlhaOpenArchive(0, "test.lzh", 0);
    UnlhaCloseArchive(harc);
  }
ここでエラーになります。
test.o(.text+0x21):test.cpp: undefined reference to `UnlhaOpenArchive@12'
test.o(.text+0x9c):test.cpp: undefined reference to `UnlhaCloseArchive@4'
02412402006/01/08(日) 20:01:00
(続きです)
そこで、def ファイルに問題があると思い、
(4) unlha32.def を書き換え
  UnlhaCloseArchive
  UnlhaOpenArchive
 を以下のように修正↓
  UnlhaCloseArchive@4
  UnlhaOpenArchive@12

で再度 (2)(3) を行ったところ、今度はコンパイルが通りました。
しかし実行してみると、
  test.exe - エントリ ポイントが見つかりません
  プロシージャ エントリ ポイント UnlhaCloseArchive@4 が
  ダイナミック リンク ライブラリ UNLHA32.DLL から見つかりませんでした。
というメッセージが出て終了してしまいます。

def の書き方が良くないのでしょうか?
(長くてごめんなさい)
0242デフォルトの名無しさん2006/01/08(日) 20:27:04
>>240
extern "C" しないとまずいんとちゃう?名前マングリングされるから。
02432402006/01/08(日) 20:51:40
>>242
extern "C" は UNLHA32.H に入っております
0244デフォルトの名無しさん2006/01/08(日) 21:29:47
dlltoolで-k (--kill-at)を付けたら?
02452402006/01/08(日) 22:16:23
>>240
できました!
ありがとうございます。今夜はぐっすり眠れそうです。
02462402006/01/08(日) 22:17:19
↑
× >>240
○ >>244
ですごめんなさい。
0247デフォルトの名無しさん2006/01/09(月) 03:35:24
>>238-239
ありがとうございます
ヒントをいただいて、libc.aをobjdumpしたらinet_lnaofがありませんでした

cygwinは捨てることにします
0248デフォルトの名無しさん2006/01/13(金) 11:47:43
ちょいと質問。
cygwin1.dllを使わないように-mno-cygwinつけるとnet関係を中心にコンパイルが通らなくなるけど、
これって要は、その辺(net関係)の関数の実体がcygwin1.dllに入っているってことなのかな?

それと、GPLに準拠(つーかオープンソースライセンスか)するならcygwin1.dllを
配布(或いは利用者に拾ってもらう)してもよいと考えていいのかな?
0249デフォルトの名無しさん2006/01/13(金) 19:38:53
まずcygwin1.dllってのはだな(ry
0250デフォルトの名無しさん2006/01/13(金) 20:18:41
それでスタートアップルーチンからdll_crt0関数をだな(ry
0251デフォルトの名無しさん2006/01/13(金) 22:45:09
もうソースだけ配布したら?
0252デフォルトの名無しさん2006/01/14(土) 07:46:42
そろそろ 3.4.5 リリース
0253デフォルトの名無しさん2006/01/14(土) 22:56:07
オフィシャルでは 3.4.6 が1末を目標に出てくるのに、3.4.5 が RC だなんて。。。

つか、RC ばっかりで正式版が出てこない最近の MinGW っていったい。。。
0254デフォルトの名無しさん2006/01/14(土) 22:56:38
失礼1末は2末の間違え。
0255デフォルトの名無しさん2006/01/19(木) 01:20:24
昨日からC言語を始めて初歩のプログラムを書いてます。
内容は
/* MyC.c */
#include <stdio.h>

int main(void) {
printf("My C Program\");
return 0;
}
という簡単なものなのですが
これをgccでコンパイルしようとしたところ
No include path in which to find stdio.hと表示されてしまいます。
どうすればコンパイルできるようになるのでしょうか?
0256デフォルトの名無しさん2006/01/19(木) 01:38:58
>>255
まずはコンパイルするためのコマンドラインを確認。
それだけのプログラムなら
 gcc MyC.c -o MyC.exe
で MyC.exe が出来上がるはず。

それでもダメなら、
 gcc -v -fsyntax-only MyC.c
とかやって、正しくインストールされているか調べて対応する。
0257デフォルトの名無しさん2006/01/19(木) 03:54:39
┐(´ー`)┌
0258デフォルトの名無しさん2006/01/19(木) 06:27:53
まあガンガレ
■ このスレッドは過去ログ倉庫に格納されています