こんにちは NewCerです。
いつも質問ばかりですみません、Webでも調べたのですがどうしても答えがでません、ここを見ろでも結構ですので情報をいただけるとありがたいです。
.NET 2003のC++ と VC++6.0 で開発した別プログラムが同一ホスト上(OS:Win2000Pro)で互いに CreateFileMapping を使って共有メモリファイルへの読み書きができるものなのでしょうか?
不可あるいは、できるとしても何か注意すべきことがあるのでしょうか?
わたしは VC++6.0側を担当せよと言われています。
よろしくお願いします。
APIを使う以上,コンパイラは関係しません。
編集 削除YuOさん コメントありがとうございます。
# いつも鋭く,核心を突いたコメントにため息がでます..... どうすれば YuOさんのようになれるのかと言う質問をしたいくらい
.NET で開発したアプリはフレームワークありきでそれがないと動作しないと認識しているのですが,このフレームワークは DLLを拡張したような働きをしているに過ぎないと捕らえてよいのでしょうか?
また,最初の質問の主旨とすこしずれるのですが .NET 環境でフレームワークを使わず従来スタイルの実行形式ファイル(exeや exe+dll)を生成することは可能なのでしょうか? その場合動作環境に .NETフレームワークが無くても実行できるものなのでしょうか?
Managed C++を使っている場合,.Net Framework環境(というか,CLR:Common Language Runtime)は必須です。
それ以外の場合,.Net FrameworkやVS.Net, VC++.Net付属のC/C++ Compilerが生成するコードは,
CLRを必要としません。
#もちろん,実行時に必要なDLL,例えば/MDでコンパイルしたときのMSVCRT.DLLは必要です。
そもそも,コンパイラオプション/clrを使わなければ,Managed C++用のコードは生成されませんよ。
YuOさん たびたびありがとうございます。
いろいろ情報を探していると .NET Frameworkって JAVAの VMみたいなものと言うのが目に留まりました。ASP.NETやIISとの連携も柔軟にできてWebに対応したと言うことなんですね。
YuOさんの上記のコメントと総合すると コンパイラオプション/clr をつけると .NET Framworkに対応した中間コードを生成し .NET Frameworkの恩恵を受けられるが、逆に言えばそれに縛られるアプリケーションになり、そのオプションを明示しなければ従来と変わらない機械語コードを生成する
なので .NET C++ と VC++6.0で CreateFileMappingなどの Win32APIを使って連携するケースでは開発環境が問題になることはない
という結論に達しました。
ありがとうございました。
解決にチェック入れるの忘れてました。
編集 削除