ご返信ありがとうございます
>私も詳しくないのですが、Cygwinのgccで普通にコンパイル・リンクしたa.outは実行時にcygwin1.dllを必要とします。
>a.outでなく.dllを作成したときどうなるかを調べて見られてはいかがでしょうか?
す、すいません。ちょっとわかりませんでした。
dllを作成したときどうなるか、とはgccで作成したDLLをさらにリンクするDLLをVCで作成してみよ。ということでしょうか?
# cygwin環境の /bin をWindows風パスにしたものは、実行時のPATH変数に入っていますよね?
すみません。ちょっと今確認できる環境にいないのでわかりませんが、VCのデバッガでcygwin1.dllがメモリにロードされていることは確認できているのでcygwin1.dll等のcygwin関連のファイルへのPATHは通っていると思います。
>あるいは、gcc -mno-cygwin は試してみられましたか?
はい。質問が舌足らずでしたが、gcc -mno-cygwinは試してうまくいっています。しかし、cygwinのXlibが使いたいのでcygwin1.dllをリンクする必要があります。
背景について全然お話していませんでした。
やりたいのは、PC-UNIX等で動くWindowsエミュレータWineをWindows上で動かしたいということです。
これができると何がうれしいかというと、WineはWin32APIをXlibを使用してエミュレートするのでWindowsアプリケーションをX上に表示することができます。そうなればcygwinのX上でWindowsアプリケーションとの連携作業もやりやすくなるし、Linux等からExcelやIEをLinux上にインストールせずともリモートで利用できるということです。(ライセンス的によいかは調べる必要がありますが)
それで、いきさつとしては、
1. WineをビルドするにはPosixエミュレートしているcygwinが適しているだろう。
↓
2. でもmakeが通らない。 (TT)
. cygwinでWineをビルドするにはかなり大変そうだ。
↓
3. いや、まてよ。Wineをすべてビルドする必要があるのか?
kernel32.dll等エミュレートする必要がないものがほとんどだ。
user32.dllとgdi32.dllとおそらくcomctl32.dll、comdlg32.dllぐらいさえコンパイルできればAPIフックのテクニックを利用して目的が達成できるのではないか?
↓
4. ひとまず、user32.dll等のDLLを作成して、MSDN
等のサンプルプログラムから利用してみよう。
↓
5. でもその前に、cygwinのgccで作成するDLLがVCで利用できるのか試してみよう。
↓
6. 動かない。ショック !
というわけで、このような質問をさせていただきました。
しかし、このような質問をしているようでは実現は
遠そうですね…
長々と失礼いたしました。
|