現在、ウィンドウズXPを使っているのですが、
ボーランドのC言語コンパイラでコンパイルした実行ファイルは
ウィンドウズでしか動かないのでしょうか。
マックやLinux上ではそのままでは動かせない
無題
Re:無題
>wineを使えばそのまま動くかと思います。
すいません、wineを忘れてました。
wineはWindowsAPIをシミュレートしてくれるので導入してもらえば動く可能性が高いです。
http://ja.wikipedia.org/wiki/Wine
ただ、DXライブラリを含めたDirectXを動かすには色々工夫が必要で、Windowsアプリの方も微妙な表示(似ても似つかない)になるものや操作不能、ハングアップがありえます。C言語の標準関数の範囲なら大半動くと思います。
すいません、wineを忘れてました。
wineはWindowsAPIをシミュレートしてくれるので導入してもらえば動く可能性が高いです。
http://ja.wikipedia.org/wiki/Wine
ただ、DXライブラリを含めたDirectXを動かすには色々工夫が必要で、Windowsアプリの方も微妙な表示(似ても似つかない)になるものや操作不能、ハングアップがありえます。C言語の標準関数の範囲なら大半動くと思います。
Re:無題
softya様
すみません、一度解決にしてしまったのですが、
よくわからないのでもう一度聞きます。
windowsというOSと、
ハードウェア、Cのコンパイラ、API、DirectX、DXライブラリ
これらの関係、繋がりがよくわかりません。
これら全てセットでwindows用ということになるののでしょうか?
OSがwindowsで、使用したコンパイラもwindows用ならば,
作られた実行ファイルも当然windowsでしか動かない、
さらにGUI用のwin32APIもwindows専用の関数なので、windowsでしかGUIが使えない、
DirectXも(これはよく知りませんが)windowsのためのグラフィック処理関数なので
windowsでしか動かない、DXライブラリもDirectXやwindowsに依存するので他のOSでは無理、
という事ですね?
そうすると、いわゆるjava言語みたいにプログラミング言語の開発環境そのものが
特定のOSに依存せずに仮想化されていて、マルチプラットフォーム対応のC言語系統というのは
今のところほとんどない、って感じですかね?
すみません、一度解決にしてしまったのですが、
よくわからないのでもう一度聞きます。
windowsというOSと、
ハードウェア、Cのコンパイラ、API、DirectX、DXライブラリ
これらの関係、繋がりがよくわかりません。
これら全てセットでwindows用ということになるののでしょうか?
OSがwindowsで、使用したコンパイラもwindows用ならば,
作られた実行ファイルも当然windowsでしか動かない、
さらにGUI用のwin32APIもwindows専用の関数なので、windowsでしかGUIが使えない、
DirectXも(これはよく知りませんが)windowsのためのグラフィック処理関数なので
windowsでしか動かない、DXライブラリもDirectXやwindowsに依存するので他のOSでは無理、
という事ですね?
そうすると、いわゆるjava言語みたいにプログラミング言語の開発環境そのものが
特定のOSに依存せずに仮想化されていて、マルチプラットフォーム対応のC言語系統というのは
今のところほとんどない、って感じですかね?
Re:無題
>>今のところほとんどない、って感じですかね?
>wmwareで仮想マシンとしてマシンそのものを動かしてます
dicさん。WMwareのCPUを含めてパソコン全体を仮想化する仮想マシンとJava実行環境を仮想化するJavaVMはだいぶイメージが違いますので、説明もなしにいきなり持ち出すとわくわくさんが混乱されると思います。
とりあえず、ややこしくなるのでWMwareについては保留させてください(そもそも利用者の導入が簡単ではありません)。
>ハードウェア、Cのコンパイラ、API、DirectX、DXライブラリ
ここを説明しますと、
ハードウェア ← OS ← API(DirectX含む) ← 実行ファイル(C言語で作られれた機械語プログラム)
と階層が分かれます。
各OS専用のC言語のコンパイラはOS毎のAPIの実装に沿った実行ファイルを作成します。
※クロスコンパイルと言う違うCPUやOS向けの実行ファイルを作る方法も存在しますが今回は省略。
JavaVMは、
ハードウェア ← OS ← API ← JavaVM ← 実行ファイル(Javaで作られた)
となります。
この仕組のためJavaVMはAPIに合わせてOS毎に違うものが必要です。
Javaランタイムと呼ばれているものがそれですね。
>そうすると、いわゆるjava言語みたいにプログラミング言語の開発環境そのものが
>特定のOSに依存せずに仮想化されていて、マルチプラットフォーム対応のC言語系統というのは
>今のところほとんどない、って感じですかね?
マイクロソフトの.NETFrameWorkがJavaVMに似た仮想的な働きをします。
なので、C#やVB.NETをLinuxで動かすオープンソースプロジェクトが存在します。
MonoDevelop
http://ja.wikipedia.org/wiki/MonoDevelop
C言語自体は思い当たりませんでした。
ただ、JavaVM上で動く言語が幾つか存在しますので、もしかしたらC言語版を開発しているオープンソースプロジェクトがあるかも知れません。
>wmwareで仮想マシンとしてマシンそのものを動かしてます
dicさん。WMwareのCPUを含めてパソコン全体を仮想化する仮想マシンとJava実行環境を仮想化するJavaVMはだいぶイメージが違いますので、説明もなしにいきなり持ち出すとわくわくさんが混乱されると思います。
とりあえず、ややこしくなるのでWMwareについては保留させてください(そもそも利用者の導入が簡単ではありません)。
>ハードウェア、Cのコンパイラ、API、DirectX、DXライブラリ
ここを説明しますと、
ハードウェア ← OS ← API(DirectX含む) ← 実行ファイル(C言語で作られれた機械語プログラム)
と階層が分かれます。
各OS専用のC言語のコンパイラはOS毎のAPIの実装に沿った実行ファイルを作成します。
※クロスコンパイルと言う違うCPUやOS向けの実行ファイルを作る方法も存在しますが今回は省略。
JavaVMは、
ハードウェア ← OS ← API ← JavaVM ← 実行ファイル(Javaで作られた)
となります。
この仕組のためJavaVMはAPIに合わせてOS毎に違うものが必要です。
Javaランタイムと呼ばれているものがそれですね。
>そうすると、いわゆるjava言語みたいにプログラミング言語の開発環境そのものが
>特定のOSに依存せずに仮想化されていて、マルチプラットフォーム対応のC言語系統というのは
>今のところほとんどない、って感じですかね?
マイクロソフトの.NETFrameWorkがJavaVMに似た仮想的な働きをします。
なので、C#やVB.NETをLinuxで動かすオープンソースプロジェクトが存在します。
MonoDevelop
http://ja.wikipedia.org/wiki/MonoDevelop
C言語自体は思い当たりませんでした。
ただ、JavaVM上で動く言語が幾つか存在しますので、もしかしたらC言語版を開発しているオープンソースプロジェクトがあるかも知れません。

Re:無題
>関数がwindows専用
>windowsでしかGUIが使えない
というより正式には
WindowsAPIというのはwindowsの機能を呼び出すための関数セットのことです
したがってGUIうんぬんではなくwindowsでしか動きません
wineはわかりやすく言うとLinuxでwindowsを動かすようなものです
確かエミュレータだったはず
ですのでLinuxでもwindowsのプログラムが動きます
その代わりに動作がめちゃくちゃ重いです
Microsoft DirectX
その名の通りDirectXはwindowsに搭載されています
Linuxで動かないのはDirectXが搭載されていないからです
ですのでwindowsだからといってXP等の古いものでは最新のDirectXは搭載されていないので動きません
最新のDirectXを導入するためには、対応したOSが必要になります
DXライブラリはこれら(windowsAPIとDirectX)
での開発を支援するものだったはずなので
>DXライブラリもDirectXやwindowsに依存するので他のOSでは無理、
という事ですね?
その解釈で合っているはずです
>windowsでしかGUIが使えない
というより正式には
WindowsAPIというのはwindowsの機能を呼び出すための関数セットのことです
したがってGUIうんぬんではなくwindowsでしか動きません
wineはわかりやすく言うとLinuxでwindowsを動かすようなものです
確かエミュレータだったはず
ですのでLinuxでもwindowsのプログラムが動きます
その代わりに動作がめちゃくちゃ重いです
Microsoft DirectX
その名の通りDirectXはwindowsに搭載されています
Linuxで動かないのはDirectXが搭載されていないからです
ですのでwindowsだからといってXP等の古いものでは最新のDirectXは搭載されていないので動きません
最新のDirectXを導入するためには、対応したOSが必要になります
DXライブラリはこれら(windowsAPIとDirectX)
での開発を支援するものだったはずなので
>DXライブラリもDirectXやwindowsに依存するので他のOSでは無理、
という事ですね?
その解釈で合っているはずです
Re:無題
Wineは意外に早いですよ(もちろん、ネイティブに勝るはずはありません)。
Windows上のCygwinとLinuxやMac上のWineではどちらが早いのか知りませんが...
私は普段、Mac上でVMware Fusionを使ってWindows XPやVistaを動かしていますが、十分快適です。
とくにXPは快適で、その上でVisual Studio 2005を動かし、さらにWindows Mobileのエミュレータを動かして開発していたりします。
あと、VMware Fusionにはユニティモードというのがあって、これを使うと普通にMacからWindowsのプログラムを実行できるようになります。さらに、Mac上のファイルにWindowsのプログラムを関連づけることもできます。
Windows上のCygwinとLinuxやMac上のWineではどちらが早いのか知りませんが...
私は普段、Mac上でVMware Fusionを使ってWindows XPやVistaを動かしていますが、十分快適です。
とくにXPは快適で、その上でVisual Studio 2005を動かし、さらにWindows Mobileのエミュレータを動かして開発していたりします。
あと、VMware Fusionにはユニティモードというのがあって、これを使うと普通にMacからWindowsのプログラムを実行できるようになります。さらに、Mac上のファイルにWindowsのプログラムを関連づけることもできます。