アプリ版:「スタンプのみでお礼する」機能のリリースについて

先日このサイトで、古いC言語のソースを現在に生き返らせる
ことについて皆さんからいろいろと教えていただきました.
本当に有難うございました. お礼を申し上げます.

お蔭様で、昔々の printf 時代のソースが、C++でコンパイル出来ました. 上位互換の意味がよくわかりました.
具体的な、コンパイルの手法については、「猫でもわかる・・・」の説明にに従いました.

ところが、コンパイルの結果について、また頭をひねっています.

ファイルの格納先としては、H:\C_PlusPlus\Source を指定し、
ファイル名は Ex_001.c としました.

私としては、コンパイルすれば、objとexeのファイルくらいが
追加されるだろうと、軽く考えていました.
ところが膨大な数のファイルが出来上がりました.

まず、H:\C_PlusPlus\Source に、Ex_01と言うフォルダが出来ました.

その中に、debug と,Ex_001と言う二つのフォルダ、
Ex_001.ncb, Ex_001.sln, Ex_001.suo と言う三つのファイルが
出来ました.

debugフォルダの中身は、Ex_001.exe, Ex_001.ilk, Ex_001.pdb の
三つのファイルです.

Ex_001フォルダの中身は、debug と言うフォルダと、Ex_001.proj,
Ex_001.projNEC・・・, Ex_001.c の三つのファイルです.

さらに、debugフォルダには、次の8ケのファイルが入っています.
BuildLog.htm, Ex\1.exe.embedded.manifest, Ex\1.exe.embedded.manifest.res,
Ex_001.intermediate.manifest, mt.dep, Prog_001.obj, vc80.idb. vc80.pdb

この莫大な数のファイルがいったい何であるのか、見当もつきません.

5,6冊ほど、C++の本を買って来ましたが、どういうわけか、どの本も、ビルドして、デバッグせよと言うだけで、それから先の説明が見つかりません.

お手数かけて恐縮ですが、どなたかそのあたりについてご教示をお願いします.
または、この辺について記述されている書籍をご紹介ください.
よろしく、お願いします.

追伸
ずっと昔、コンパイルしてリンクしていたころのことを思い出して、
ソースとexeファイル以外は全部消して見ました.

それでも結構、exeファイルは動きます. 問題ないようです.
いったい、あの沢山のフォルダやファイルは、はたして、保管の必要があるのでしょうか?

テストしたプログラムは、最簡単なものとして、次のとおりです

#include "stdio.h"
int main() {
int num;
printf (" My name is Bill \n");
scanf ("%d", &num);
return 0;
}

A 回答 (8件)

とりあえず全部は載ってませんがこの辺を



Visual C++ プロジェクトに対して作成されるファイルの種類
http://msdn2.microsoft.com/ja-jp/library/3awe478 …
    • good
    • 0
この回答へのお礼

sakusaker7様

有難うございました.
お蔭様で、各ファイルの意味がすこしですがわかってきました.
深くお礼を申し上げます.

でも、なんと沢山の数のファイルでしょう!

お礼日時:2007/06/26 17:33

結局環境は教えていただけませんでしたが...



> Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat に見つかりました.

から察するに、Visual Studio 2005なのでしょう

> 尚、このようにパスを設定しなければ、CLは動作しません.

Visual Studio 2005であれば、スタートメニューから

Microsoft Visual Studio 2005 → Visual Studio Tools → Visual Studio 2005 コマンド プロンプト

とたどるのが普通の使い方です。
もちろん、自分でvcvars32.batを呼んでもかまいませんが。
    • good
    • 0
この回答へのお礼

有難うございました.

お礼日時:2007/06/27 16:04

> その場合、パスを設定するバッチ・プログラムがどこにあるかを教えていただけませんか. 



正確な環境を補足してください。(バージョンまで含めて)
    • good
    • 0
この回答へのお礼

C#をコマンド・ラインからコンパイルするときに使っているVSVARS32.batを実行すると、次のように表示されるのに気付きました.
いまごろになってやっと気付くなんて、頭の程度がわかります. お恥ずかしい限りです..

Setting environment for using Visual Studio tools.
If you also have Visual C++ 6.0 installed and wish to use its tools from the command line, run vcvars32.bat for Visual C++ 6.0.

多分、このバッチを使えばOKだろうと考えて、探して見ましたところ、
Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat に見つかりました.

早速使用してみたら、うまくコンパイルできるようになりました.
尚、このようにパスを設定しなければ、CLは動作しません.

以上、ご報告まで

お礼日時:2007/06/27 12:13

#3です。


少し補足です。
今回はDebug版ということですが、
コンパイル時の生成物はDebug版だけではありません。
むしろ、製品などで出荷した場合で、その製品に不具合が発生した場合
などにその原因を調査する為に、使うことの方が多いです。

もし、製品などのRelease版でこれらの情報がある場合には、
取っておいて損は無いと思います。
    • good
    • 0
この回答へのお礼

再度のご教示有難うございました.
お蔭様で、其のあたりの事情がすこしづつわかってきました.
お礼を申し上げます.

お礼日時:2007/06/27 09:36

debug版は、サイズが大きかったり遅かったりの外にも、


第三者への配布にライセンス上の制限があるとか、
デメリットも多いので、開発中でなければreleaseにした方がいいです。
    • good
    • 0
この回答へのお礼

MrBan様

有難うございました. 何も知りませんので、debug版とrelease版の区別もわかりませんでした.

お蔭様で、勉強が出来ました. 深くお礼を申し上げます.

お礼日時:2007/06/26 18:11

コマンドラインからコンパイルすれば、このようなことは起きません。

具体的には、

cl Ex_001.c

とすれば、おそらくEx_001.objとEx_001.exeだけが生成されるはずです。

ところで、

> C++でコンパイル出来ました.

とのことですが、おそらくC++ではなくCとしてコンパイルされていると思います。C++としてコンパイルするには、拡張子を.cppや.ccにするか、それ用のコンパイルオプションを指定する必要があります。
    • good
    • 0
この回答へのお礼

> C++でコンパイル出来ました
おっしゃるとおりです. Cとしてコンパイルされています.

私の質問の書き方が不備で恐縮です. 「ANSI Cのソースを、C++のコンパイラの上位互換性を利用して、Cとしてコンパイルしました」と書くべきでした. 全く恐縮です.
また、ソース・ファイル名のサフィックスはCです.cppやccではありません.

ご教示、お礼申し上げます.

また、コマンド・ラインからコンパイルしたらとのご教示有難うございました. その場合、パスを設定するバッチ・プログラムがどこにあるかを教えていただけませんか. 
C#をコマンド・ラインからコンパイルするときには、Program Filesの奥にあるvcvar32.batと言うのを使っています.
そのうち探そうと思いながら、のびのびになっています. 勝手なお願いで恐縮です. よろしくお願いします.

お礼日時:2007/06/26 18:07

とりあえず、この様なご質問をされる場合には環境を書きましょう。


全てのコンパイラが同じものを出力するわけではありません。

今回はVCのようですが、
コンパイラがコンパイル時に生成する生成物は、
主にそのアプリケーションなどがクラッシュした時などに
どの部分でクラッシュしたかの特定するのに使用したりします。
WindowsであればWinDbgなどの解析ツールを使用して、
原因を調査したりします。

出力されるファイルには以下のような物があります。
・作成したモジュールのシンボルテーブル(関数名の一覧など)
・モジュールのアセンブリコード(文字通り)
・ビルド情報(デバッガのコンパイル時のメッセージ)
・リソースバイナリ(リソースファイルのバイナリ)
・モジュールマップファイル(関数の相対ロードメモリの位置など)
など
これらはVCのプロジェクトの設定で制御できるので、
しらべて必要なものを出力すると良いと思います。
いらなければ消しても構いません。
    • good
    • 0
この回答へのお礼

ご教示、有難うございました.
環境の説明不備の件、今後気をつけます.

お礼日時:2007/06/26 17:41

開発段階で必要になるファイルですね。


開発終了で2度とソースをいじらないなら一度コンパイルして実行ファイルを作れば他のファイルは必要ありません。
ただdebugフォルダに出来るのはデバッグバージョンなのでデバッグ用のコードが埋め込まれファイルサイズが大きくなってます。
開発終了ならリリースバージョンにしましょう。
    • good
    • 0
この回答へのお礼

よくわかりました.
これで、exeファイル以外は、安心して消してしまいます.
有難うございました.

お礼日時:2007/06/26 17:38

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