ここから本文です

CLI(Common Language Interface)について、質問します。 Q1) VS2013は、CLIに適合...

nqf********さん

2015/12/2213:58:13

CLI(Common Language Interface)について、質問します。
Q1) VS2013は、CLIに適合しますか?
Q2) CLIとは、簡単に言うとどのようなものですか?

以上、初心者の質問ですが宜しくお願いします。

補足Q3) VS2013(MFC)の命令(例えば、itoaとか)の詳細を見る方法は?

以上

閲覧数:
151
回答数:
4
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

n2q********さん

2015/12/2217:58:24

Q1) VS2013は、CLIに適合しますか?

C++/CLI, C#, VB.NET、どれでも好きな言語で作り込めますよ。

Visual Studio .NET 2002 からスタートしました。そのすぐ後 Visual Studio .NET 2003、そして .NET が取れて 2005、2008、2012、その次が 2013 ですからね。

名称から .NET が取れましたが、そのことに特別な意味はありません。ずっと .NET は有効ですから。

C++/CLI の場合、2003 と 2005 で大きく変わりました。2003 までのは非常に使いにくいものでしたからね。ていうか、C++/CLI という名前じゃなかったのですよ。

あと、2010 で C++/CLI のフォームアプリケーションは終了。2012 以降でも無理をすれば作れますけど。GUI アプリケーションを C++/CLI で作るのはやめましょうという、マイクロソフト社の考えなんですよね。だって、C# があるわけだから。C++/CLI やる必要がない。そういうわけです。


Q2) CLIとは、簡単に言うとどのようなものですか?

昔、VB というのがありましたよね。Visual Basic です。なかなか良いものでしたがバージョン 6.0 で終了。その次は VB.NET となりました。

Active X ってご存知ですか?いろいろなことを VBScript や JScript 、あるいは VB とかの言語で簡単にやってしまおうという、それがマイクロソフト社の戦略でした。モジュールを C++ で作って、それをスクリプトや VB で使う。ややこしい細かい部分は C++ で頑張って、アプリケーションレベルの大きな動きをスクリプトや VB で行おうという発想です。

でも、終わってしまった。(完全に、ではないかもしれませんが)

その次が .NET です。

.NET の場合、モジュールは C# か VB.NET かで作ります。C++ じゃないのですよ。でも、どうしても C++ にしたい場合は C++/CLI という特殊バージョンの C++ がありまして、これを使うのです。

.NET というと .NET Framework というものがありまして、ライブラリの様なものです。これがとてつもなく充実していますのでね。だから C++ で細かい作りこみを行う必要が無くなったのです。

え?ほんとに必要無いのかって?

まぁ、普通は必要ないです。C# だけ、VB.NET だけで完結。それが普通でしょう。

特別な事情でどうしても C++ じゃなきゃイヤだっていう場合、C++/CLI の出番となります。

でも、C++/CLI やってる人は僅かです。ものすごく難しいので。タダでさえ難しい C++ を、更に難しくした格好です。

簡単なものが欲しい人は C# なり VB.NET なりがありますのでね。だから C++/CLI を簡単にしても意味が無い。それも当然ということかと。


~補足~

Q3) VS2013(MFC)の命令(例えば、itoaとか)の詳細を見る方法は?

え? CLI の話は終わり?ていうか itoa ですよね。MFC じゃないし。命令…でもないし。

C/C++ ランタイムライブラリの関数ですよね。

詳細というと、コードのことでしょうか。itoa を呼び出すコードを記述。ブレークポイントを設定して実行すると、itoa のソースコードが見えますよ。

《備考》

C++/CLI 、一時期流行したみたいです。Visual Studio 2008 と 2010 の頃だったと思います。間違って入門してしまう人が続出。でも、とんでもない代物だと気付いてすぐにやめてしまった模様。

C++/CLI、やらない方が良いです。

と言っても、どうしてもやりたいという人も居ます。そういう人は向いていると思う。実際の話、なかなか良いものなんですよね。C# より好きです。

  • 質問者

    nqf********さん

    2015/12/2223:01:43

    >C++/CLI, C#, VB.NET、
    <---"ユーザーのAppが、C++/CLI, C#, VB.NET、どれでも好きな言語で作り込め"と解釈して宜しいでしょうか?
    又、MFCもC++の一種と考えて宜しいでしょうか?

    >あと、2010 で C++/CLI のフォームアプリケーションは終了。
    <---VC++6.0を最近まで使用していました。
    このMFCは、" C++/CLI "の範疇に入りますか?
    私は、VC++(又はC++)とMFCの区別が明確で無いので、
    以上の質問をしたことになるかも知れません。

    >え? CLI の話は終わり?ていうか itoa ですよね。MFC じゃないし。命令…でもないし。
    <---CLIの話は終わりです、話題が飛んで御免なさい
    itoaの替わりにatoiで話を続けさせえ頂きます。
    下記の如くatoiは使用し、VC++6.0(MFC)で使用しており
    文字を整数に変換します。
    // wk=atoi(ss); //VC++6.0(MFC)の場合
    wk=_tstoi(ss); //VS2013(MFC)の場合
    VS2013(MFC)の場合では、_tstoi命令の詳細説明の検索方法
    を質問した訳です。

  • その他の返信を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2015/12/23 20:43:50

本当に有難うございました。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

2015/12/2305:31:54

Q1) VS2013は、CLIに適合しますか?
表向きは撤廃sれてしまったように見えますが、C++/CLIのプログラムが作れないわけではないようです。
ただ、表立ってMS社はこれを盛り立てて気はないようです。

Q2) CLIとは、簡単に言うとどのようなものですか?
.Net freamwrokを使うための統一的なインターフェスを提供する仕組み、規格のことです。

簡単に言えば、WINDOWSフォームアプリを作るときに、CLIの規格にそって設計された言語環境ならC#だろうとF#だろうと、BV.NETだろうと、シームレスに利用してプログラムが作れるってシロモノです。

CLIに準拠する.Netfreamworkが使える環境として特筆するべきはLinuxに移植されたmonoが指摘できると思います。

C++/CLIはCLI規格に準拠したC++というだけの話です。

Q3)VS2013(MFC)の命令(例えば、itoaとか)の詳細を見る方法は?

itoaはC言語の標準ライブラリー関数なので、「標準関数」の検索ワードで簡単にググれると思いますよ。

MFCについてはMSDNなどで検索するしかないかな…
ただ、今更MFCを勉強するよりは、WIN32APIでゴリゴリ書くかC#で楽して作るかしたほうが良いと思います。

以前から言われているほど、C#(.Net freamworkとネイティブコードの速度差はそれほど極端に開きがあるわけでなく、VSのバージョンが上がるごとにこの辺りの話は次第に都市伝説となっていく宿命です)


極端な言い方をすればC++/CLIにせよ、MFCにせよ、流行りはあるにせよ、完全に排除されることはありえないと思いますが…


今からプログラミングの勉強として選択するなら…

MFCやC++/CLIを勉強するくらいなら、アセンブラやWin32APIでも勉強したほうがよほど、役に立つ(つぶしがきく)んじゃないかと思います。

一番つぶしがきくのは今やC#ですが…これもMS社の姿勢次第じゃ何処に転がるかわからないですしね。^^;
かつてWindowsプログラムと言えばMFCを使いこなすことと同義だった時代もあるわけで…^^;

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

mer********さん

2015/12/2301:56:32

>Q2) CLIとは、簡単に言うとどのようなものですか?

JavaVMの対抗馬です。

Javaでは、JavaVMという仮想マシンを定義し、アプリケーションは実物のCPUの機械語ではなくJavaVMで動かすこととなっています。
これによって、移植性やセキュリティが向上します。

MicrosoftがJava以外の言語でこの考え方を取り入れたのがCLI(.NET)です。
JavaVMがJavaしか想定してないのに対して、CLIはVB.NET、C#、F#など複数の言語を想定しています。
また、クラスライブラリも複数の言語から使うことを想定しています。

CLIは仮想マシンですから、原理的にはCPUが違っていても同じアプリケーションを動かすことが可能です。
たとえば、Windows 8以降のWindowsストアアプリは.NETアプリであり、一般的なx86/x64 CPUのWindows PCでも、ARM CPUのWindows RTタブレットでも動きます。
また、機械語を直接実行するのと違い、セキュリティ的に危険なことができにくくなっています。

Microsoftとしては、「C/C++でWin32 APIやMFC」といった古いスタイルは捨て去って、.NETに移行させたいのだと思われます。
それが証拠に、Visual Studio 2015はデフォルトインストールでC/C++コンパイラが入りません。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

[CLIの簡単な説明の件]
VB.NETであろうが、C#であろうが、C++/CLIであろうが、コンパイル(ビルド)して作られるプログラムが、CLI と言う標準規格によるプログラムになると言うものです。
よって、例えば、C#で作ったDLLを、VB.NET、又は、C++/CLIで作るEXE に読み込むことが可能です。
その逆に、VB.NET、又は、C++/CLIで作ったDLLを、C#で作るEXE に読み込むことが可能です。
C#も、C++/CLIも、VB.NETも、CLI の仕様を受け入れているプログラミング言語なので、コンパイル後(ビルド後)は、共通した規格のプログラムになります。

[Visual StudioでのCLI適合の件]
C#やVB.NETやC++/CLIと言った.NETと言う系統のプログラミング言語が、CLI仕様に対応しています。
これに対して、C言語とC++は、CLI仕様には、対応していません。
なお、Visual C++は、C言語とC++とC++/CLIが使えますが、
C++/CLIでコンソールアプリケーションソフトを作る場合は、プロジェクトの種類を
「CLRコンソールアプリケーション」
とします。
C++/CLIで、Windowsアプリケーションソフトを作る場合は、プロジェクトの種類を
「Windowsフォームアプリケーション」
とします。
ただし、Visual Studio2013(以降)では、プロジェクトの種類における「Windowsフォームアプリケーション」がなくなりました。
しかし、C++/CLIでのWindowsアプリケーションソフト作成自体が行なえなくなった訳ではありません。
Visual Studio2013 と C++/CLIのキーワードでインターネット検索すると、やり方の情報がわかります。


[VS2013(MFC)の命令の件]
MFCは、C++で使うライブラリなので、C++/CLIとは無関係です。
少なくとも直接的な関係はないです。
よって、C++/CLIをベースにして、C++記述も取り込む場合は、C++/CLI記述部分と、C++記述部分とのインターフェイス処理部を作ると言う手間のかかったことを行なう必要があります。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる