プロが教えるわが家の防犯対策術!

 ダウンロードした自作アプリケーションにWindowsでつくられた自作アプリケーションのC言語ソースがついていました。そこで、Mac OS Xで同じ物を作ろうと思いソースをコピー&ペーストしビルドして実行をしましたがエラーとなってしまいました。
 Windows C言語とMac C言語は何か違う物なのでしょうか?ご回答お願いします

A 回答 (6件)

> Windows C言語とMac C言語は何か違う物なのでしょうか?



C言語自体はどちらの環境でも基本的に違わないと思っていいです。
標準Cライブラリ (参考URLを参照) の機能だけを使ってプログラムを書けば、WindowsとMac OS Xとどちらでもビルド・実行できるものを作れます。

しかし、標準Cライブラリの範囲を超えてWindowsに固有の機能を使っているCプログラムであれば、そのままではMac OS Xでビルドすることはできません。
たとえば、Windows用のCプログラムではwindows.hというヘッダファイルをincludeしている場合が多いのですが、このヘッダファイルは標準CライブラリもMac OS Xにもありません。もちろん、ヘッダファイルだけをWindowsからコピーしてきても無駄です。

参考URL:http://ja.wikipedia.org/wiki/%E6%A8%99%E6%BA%96C …

この回答への補足

分かりやすい回答ありがとうございました。
皆さんの回答をみていると元のプログラムのソースから自分で作らないといけないということですか。引き続きご回答お願いします。

補足日時:2008/09/28 15:50
    • good
    • 0

#4です。



> 元のプログラムのソースから自分で作らないといけないということですか。
> 引き続きご回答お願いします。
と言われましても、それを判断するのに必要な情報が質問者から提供されていないので無理です。
そもそも、ビルドできたのかできなかったのかさえ曖昧なままです。

たとえば、
・そのダウンロードしたアプリケーションの名前やURL
・「エラーになってしまいました」というそのエラーの内容
あたりを投稿していただければ進展があるかもしれません。
    • good
    • 0

ビルドできたのであれば、基本的にはソース自体には問題がないと


いう事だと思います。

windows.hなどのWinAPIやCOMとかATL/WTLなどの機能を使用している
場合はそもそもコンパイルできませんから。
ビルド(コンパイルとリンク)ができたならC/C++標準ライブラリだけで
構築されていたのだと思います。

ただ、標準ライブラリだけで作られていてもバイナリ上はまったく
互換性がないのでバイナリや機械語などの処理部分を持っていると
正常に動作しないと思います。
あとは、OSのシステムコールとかを呼び出している場合も正常に
動作しないことがあると思います。
    • good
    • 0

そもそも、



> エラーとなってしまいました。

どんなエラーが出たを提示していないところに問題がありそうです。
エラーメッセージの全文を正確に載せてください。

この回答への補足

確かに問題がありました。
Xcode Toolsというソフトを使っているのですが、そのソフトは、下の方のバーにエラーが出ているというマーク『×』がでているだけです。ちなみに20個です。

自分で一から作った方がよいのでしょうか・・・。

補足日時:2008/09/27 17:45
    • good
    • 0

いや、でも、



> ビルドして実行をしましたがエラーとなってしまいました。

こう書かれてますので、ビルドはできたけど実行できなかった、
と解釈するのが自然であるような気が…。

実際のところどうなんでしょ?
ビルドはできたんですか? >質問者さん

この回答への補足

すみません!説明不足でした!
ビルドして実行というのはボタンが二つともいっしょになっているソフトを使っているのでビルドして実行という書き方をしています。ビルドだけのボタンがあり、それを押すとちゃんとできてるみたいです。

補足日時:2008/09/27 17:31
    • good
    • 0

Windows特有の機能を呼び出しているC言語プログラムのソースコードを


他のOSでコンパイルすることはできませんよ。

この回答への補足

aigaionさんの回答をみると、やっぱり自分で作らないといけないということですね。

補足日時:2008/09/27 17:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!