すべてのカテゴリ » インターネット・パソコン » 技術・プログラミング

質問

終了

Microsoft Visual C++ と、 昔からあるいわゆるC++との違いは何でしょうか?Microsoft Visual C++のプラットフォームは.NET Framework だから、Microsoft Visual C++はLinux上では動かないということでしょうか?
Microsoft Visual C++でないC++のソースは、Microsoft Visual C++では簡単にはコンパイルできないということでしょうか?

  • 質問者:ss
  • 質問日時:2009-04-10 15:20:03
  • 1

★1 & 3
Microsoft Visual C++ は開発環境の製品名、C++は言語仕様です。昔からあるいわゆるC++と言うご質問の書き方からすると標準C++の事を意味していると思いますが、Microsoft Visual C++ は標準C++を独自に拡張しているので、UNIX等の環境向けに標準C++向けとして書かれたのソースをそのままMicrosoft Visual C++ でコンパイルしても相当簡単なプログラムで無い限りは大抵の場合、エラーが出ます。

なので開発環境に合わせてソースを色々と書き換える必要が有りますが、Unix等でインプリメントする場合と比べてかなり労力が必要です。

更にMicrosoft Visual C++の進化段階でかなり言語仕様に変更が有るので、バージョンが変わっただけでエラーの山になったり、ウォーニングを無視して実行させると実行時エラーの山にぶち当たる事もあります。Microsoft Visual C++ 2005と2008でさえマネージコードとアンマネージコード等の取り扱いに進化と変更と差異がありバージョン間でも多くの非互換部分が存在しているので、素直にコーディングされていないとエラい目に有る事も有ります(経験済み)。

なので3番目の質問の回答としては、素直にC++に準拠して作成されたソース以外はかなりの部分を変更する必要があると思います(特にユーザインタフェースに関する部分やOS独自の機能に依存する部分は全部書き換えになるでしょう)。

★2
.NET Frameworkについては
http://msdn.microsoft.com/ja-jp/library/zw4w595w.aspx
にて解説されていますが、アプリケーションの共通の実行環境としてOSの差異等を吸収する為に開発された技術です。Java等の実行環境と同様の概念と考えてください。なので.NET Frameworkのランタイムライブラリ等がインストールされていればMicrosoft Visual C++にて.NET Frameworkアプリとして開発されたアプリケーションはLinux上でもMac上でも動作はします。ただし有る程度のOSの際は吸収されると思いますが、極端にOSに依存する部分は除きます。

Microsoft Visual C++にて.NET Framework向けのアプリケーションを開発する事は可能ですが、しかし現時点ではWindows以外の環境には実験的なシステムは存在している物の、実用的にはWindows上にしか実行環境がありません。

またMicrosoft Visual C++自体の動作環境(開発環境)としての現在のMicrosoft Visual C++はVisualStudio製品の機能の一部となっており、製品仕様としてはメーカからシステム要件として公開されています(昔はDOS版の単品売りなんてのも有りましたが)。
http://msdn.microsoft.com/ja-jp/visualc/default.aspx
http://www.microsoft.com/japan/msdn/vstudio/productinfo/2008/
http://download.microsoft.com/download/1/a/c/1ace5b62-1fb8-4357-81f1-dbf92d805d9d/VS2008Readme.htm
これを見る限り(システム要件)、
引用開始『
1. システム要件
1.1. サポートされているアーキテクチャ
x86
x64 (WOW)

1.2. サポートされているオペレーティング システム
Windows XP
Windows XP Service Pack 2 以降
Windows Server 2003 Service Pack 1 以降
Windows Server 2003 R2 以降
Windows Vista
Windows Server 2008

1.3. ハードウェア要件
最小 : 1.6 GHz の CPU、384 MB の RAM、1024 x 768 を表示できるディスプレイ、5,400 RPM のハード ディスク
推奨 : 2.2 GHz 以上の CPU、1024 MB 以上の RAM、1280 x 1024 を表示できるディスプレイ、7,200 RPM 以上のハード ディスク
Windows Vista 上で実行する場合 : 2.4 GHz の CPU、768 MB の RAM
』引用終了
となっているのでLinuxでの動作は期待できません。

この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。
お礼コメント

大変参考になりました。ありがとうございました。

並び替え:

①Microsoft Visual C++について

Microsoft Visual C++ は、単なる開発環境です。なので、そのような言語はないです。
言い換えれば、Microsoft Visual C++で、C言語、C++、C++/CLI言語記述プログラムをコンパイルできる、統合開発環境です。

C++/CLI のような拡張されたプログラム言語を記述していれば、標準のC++のコンパイラではコンパイルできません。

イメージ的な話をすると、C++は、C言語を継承しています。C++/CLIは、C++を継承しています。
(継承は、バージョンの古い言語(C言語)の関数をC++、C++/CLIでも使えるように引き継いで更に関数の用途が増えているとイメージしてください。)
※ネイティブC++コードを、C++/CLIでコンパイルできます。(100%包括しています。)

なので、C++で解釈できない拡張部分があるのならば、書き直しが必要ですね。

②C++のソースについて

Microsoft Visual C++で、C++のソースコードはコンパイルできます。ただし、前提条件として、開発環境に依存するようなプログラムを書いているケースがあれば、当然変更が必要です。(例えば、MFCで作ったプログラムは、当然UNIX上では使えないので、その部分を書き換える必要があります。)

ざっくりですが、以上です。

  • 回答者:Eclipse (質問から9時間後)
  • 1
この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。

Microsoft Visual C++は製品名でC++は規格です。
C++のソースは、Microsoft Visual C++でコンパイル可能です。

  • 回答者:匿名希望 (質問から6時間後)
  • 1
この回答の満足度
  
参考になり、満足しました。回答ありがとうございました。
お礼コメント

いろいろ調べてみたんですけど、
ネイティブC++コードを、C++/CLIでコンパイルできるのでしょうか?
それならば、マーシャリングはどのようなときに使うのでしょうか?

DOS番で ①C言語と ②C++がありました。
Windowsになり ③Vusual C++ができました。
.NET の時代になり、フレームワークを使用する ④Visual StudioにC#ができ、別に⑤Visual C++が残っていました。
(ここまでは知っていましたが、最新のVisual Studio2008 にC++がはいったようですね。)
wikiからのVisual C++の抜粋ですが
========
Visualとついているが、Visual Basicなどと違ってRADではなく、基本的にはWindows SDK (Windows API)やMFCを使用してプログラムを作成することになる。(ただしダイアログエディタでウィンドウデザインを行うことは以前からできた)しかし、.NET 2003以降、後述するマネージ拡張C++或いはC++/CLIを使用して開発する場合は、フォームエディタを始めとしたC#やVB .NETのようなRADが使用できる。
========
なのでVisualStudio2008 の C++は基本的にはフレームワークを使用する、というより上記③のような書き方で使用するのが正解のようです。
単品で最新のVisual C++では最初から上記③のようにフレームワークに依存しない書き方しかできないようです。

===補足===
Q1については Microsoft Visual C++ ですね。
Q2については Visual C++ だと画面表示の命令系がLinuxとは違いすぎます。なのでVisual C++で書いたやつをLinuxにもっていったところで動作しません。

  • 回答者:匿名希望 (質問から53分後)
  • 1
この回答の満足度
  
参考になり、満足しました。回答ありがとうございました。
お礼コメント

すいません理解しきれていない部分があるのですが、
Q1.「単品で最新のVisual C++」とは、Microsoft Visual C++ のことでしょうか?
Q2.そうだとしたら、単品で最新のVisual C++ は、フレームワークに依存しない書き方しかできない→.NET Framework を使えない(使わない) → Linux上でも動く
ということでしょうか?

関連する質問・相談

Sooda!からのお知らせ

一覧を見る