マイクロソフト社のVC++(Visual Studio 2008)で
コンソールアプリケーションを作成しようとしております。
ファイルは複数ファイルからなり、
mainprogram.cpp -> 実行ファイル(mainprogram.exe)
subprogram1.cpp -> オブジェクトファイル(subprogram1.obj)
subprogram2.cpp -> オブジェクトファイル(subprogram2.obj)
・・・以下続く
のように
1)サブプログラムをobjファイルとしてコンパイル
2)メインプログラムをコンパイルしてobjファイルとリンクし、
実行ファイルを作成する
というような作業を行いたいと考えております。
以前はLinuxの環境でg++、makeを利用して
このような構成のコンソールアプリケーションを作成しておりました。
が、VCに移行するに当り、どのようにプロジェクトファイル等を
構成して良いか分からず、出だしでつまづいております。
VCにもコマンドラインでコンパイルする方法
(cl, nmakeを使うんでしょうか。。。)があるみたいですが、
これらの手法について書かれている
書籍、サイト等を探すことが出来ないでおります。
VCに関して、このような使用法に対する解説がなされている書籍、
もしくはサイト等をお教え願えませんでしょうか?
宜しくお願い申し上げます。
No.2ベストアンサー
- 回答日時:
の
----------
5.次にソリューションエクスプローラーの
ソースファイルというフォルダを右クリックして、
[追加] → [新しい項目の追加]
を選択し、C++ファイルを追加します。
追加されたファイルにプログラムを記述していきます。
----------
を、必要なだけ繰り返します。
1回目は「mainprogram.cpp」で、2回目以降は「subprogram○.cpp」で追加して下さい。
プロジェクトをビルドすると、すべてのソースがコンパイルされ
mainprogram.cpp -> オブジェクトファイル(mainprogram.obj)
subprogram1.cpp -> オブジェクトファイル(subprogram1.obj)
subprogram2.cpp -> オブジェクトファイル(subprogram2.obj)
となり、すべてのオブジェクトファイルが無事に生成されると
mainprogram.obj
subprogram1.obj
subprogram2.obj
上記以外の必要なライブラリ
がリンカによって結合され
実行ファイル(project1.exe)
が出来上がります。出来上がる実行ファイルの名前は、自動的にプロジェクト名と同じになります(この例ではプロジェクト名を「Project1」にした)
因みに
>mainprogram.cpp -> 実行ファイル(mainprogram.exe)
>subprogram1.cpp -> オブジェクトファイル(subprogram1.obj)
>subprogram2.cpp -> オブジェクトファイル(subprogram2.obj)
という解釈は誤りです。上記のように
mainprogram.cpp -> mainprogram.obj
subprogram1.cpp -> subprogram1.obj
subprogram2.cpp -> subprogram2.obj
と言う段階と
mainprogram.obj + subprogram1.obj + subprogram2.obj + ライブラリファイル -> project1.exe
と言う段階と、2つあります。
>mainprogram.cpp -> 実行ファイル(mainprogram.exe)
というように「メインプログラムがいきなり実行ファイルになる訳じゃない」ので注意しましょう。出来上がる実行ファイルも、メインプログラムのファイル名とは別の名前になります。
更に言うと、VC++(Visual Studio 2008)は、メインプログラムとサブプログラムとを区別しません。どれも平等に扱います。
どれも平等に扱うので、メインとなるソースファイルが何番目にあっても構いません。
メイン/サブの区別は、人間が勝手に「main関数があるソース」と「main関数が無く、別の関数があるソース」を区別して呼んでいるだけに過ぎません。
コンパイラは、単に「ライブラリファイルの中にあるスタートアップルーチンを実行ファイルのエントリポイントとして実行ファイルを作るだけ」です。
そして「ライブラリファイルの中にあるスタートアップルーチンに、main関数をコールしている記述がある」ので、人間の目には「main関数からプログラムが開始される」ように見えるだけです。
そして人間は「main関数からプログラムが開始されるので、それがメインだ」と思い込んでいるに過ぎません。
どうもありがとうございます。
お礼が遅くなりすみません。
ここまで詳しく解説していただきありがとうございます。
参考どころかほとんど答えを教えていただき、
恐れ入ります。
早速試してみます。
どうもありがとうございます。
No.1
- 回答日時:
統合環境で作るなら, プロジェクトを作るときにコンソールアプリケーションを選んでおいて, 必要なファイルを全部追加すればいいだけじゃないかな.
コマンドラインでコンパイルするなら, コンパイラについてはヘルプを見ながらちまちまとオプションをおきかえるだけ. むしろ GNUmake から nmake への移行の方が面倒だけど, 「普通の Makefile」なら $^ を $** に置き換えることだけ気をつければ大体コンパイラオプションの置き換えだけですむ. ただし「普通じゃない Makefile」だと修正不可能なこともあるので, その場合は Cygwin をインストールするとか頑張って Makefile を全部書き直すとかすることになる.
いずれにしても, MSDN は確認した方がいいと思う.
参考URL:http://msdn.microsoft.com/ja-jp/library/default. …
早速ありがとうございます。
お礼が遅くなりましてすみません。
なるほど、やはり面倒くさがらずにヘルプを読みながら、
というのが基本なのですね。
MSDNも新しい関数の使い方なんかを知るためには
見たりしてたのですが、
ちゃんと探すと今回のケースのような情報も載っているんですね。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) FPGA構成データ、ソフトウェアデータ をボード Zybo Z20 用に転送する方法 1 2023/07/25 18:19
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- C言語・C++・C# C#の2つの実行ファイルとアプリアイコンの変更について 1 2023/01/07 16:57
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) Wordマクロで指定したフォルダ名に保存する方法について 8 2022/12/13 11:35
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのEXEを作るのは可能...
-
C#のクラスをVB.netで使用したい!
-
コンパイルするときに、ファイ...
-
VS2010 ProductVersion 変更
-
AccessVBAからC言語のDLLの呼び...
-
ソースから参照しているOCXの一...
-
Visual Studio2008でヘッダファ...
-
リビルド後に実行しようとする...
-
VC++ 2010でlog4cxxビルドできない
-
別名で保存の方法
-
VB.NETで他のプロジェクトで作...
-
VB6で、非表示モジュール(?)の...
-
ユーザー名・作成者について(Vi...
-
エラーの原因は?「この関数の...
-
他の.CPPファイルに定義した関...
-
VB6.0 オブジェクトを一覧で表示
-
VB6.0の別名保存について
-
VC++でexeファイルが作成できま...
-
C言語初心者の質問失礼します。
-
どんなプログラムを書いても指...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで他のプロジェクトで作...
-
ACCESSのEXEを作るのは可能...
-
コンパイルするときに、ファイ...
-
エラーの原因は?「この関数の...
-
VB.NETでActiveX(OCXファイル)作成
-
ソースから参照しているOCXの一...
-
他の.CPPファイルに定義した関...
-
VC++でexeファイルが作成できま...
-
VB6で、非表示モジュール(?)の...
-
C#のクラスをVB.netで使用したい!
-
「マージする」とは?
-
Visual Studioでプロジェクトが...
-
Visual Stadio2008 Releaseビル...
-
VBソースを表示できない。
-
プリコンパイル?
-
libssh2のインクルード
-
VB6.0 オブジェクトを一覧で表示
-
VB6.0の別名保存について
-
VisualBasicを保存するときにで...
-
同じソースコードなのにバイナ...
おすすめ情報