C++/CLI

C++/CLI_delete について

delete は C# の Dispose メソッドと同じ役割を持つ。 正確には、delete するハンドルが指すオブジェクトが、IDisposable を実装している場合、IDisposable の Dispose( ) を確実に呼び出す。 C++ の場合 オブジェクトの寿命はスコープなどと常に等しい。範…

C++/CLI_デストラクタ と ファイナライザ ( 追記 )

アンマネージドなリソースを使っている場合のソースの追記。 デストラクタとファイナライザ デストラクタ これは使わないから捨てるね! 人の目から見てインスタンスが破棄されたときに実行される関数。delete と書くと実行されるので人は把握できる。 gcnew…

C++/CLI _デバッグで変数の中身が見れない

C# プロジェクトで動かす C++/CLI や C++ ( DLL ) の Debug を効かせたい。つまりアンマネージ コードのデバッグを有効にしたい。 Please set the debugger type Mixとコンソールにメッセージが出た。 前提:C# のプロジェクトを選択。 1.ソリューション エ…

C++/CLI の基礎 ( デストラクタとファイナライザ )

C++/CLI のオブジェクトは、ガーベージコレクション時に呼ばれるファイナライザにて解放処理を行う。呼び出されるタイミングはガーベージコレクションが判断。 不必要となった時点で明示的に解放すべき場合は、delete 呼び出し時に呼ばれるデストラクタにて…

OpenCV_cv::VideoCapture を C++/CLI で使う

C++ cv::VideoCapture cap("./動画ファイル"); cv::Mat mat; cap >> mat; C++/CLI cv::VideoCapture * capX; capX = new cv::VideoCapture("./動画ファイル"); cv::Mat mat; *capX >> mat; しかし、capX をメンバ変数に代入して関数間で使おうとすると例外発…

C++/CLI_ ^ と % と *

ハンドル型とハンドル演算子とアドレス演算子 C++/CLI ^ :ハンドル型 値型の変数はオブジェクトと一体。値型:オブジェクトそのものを表わす。 参照型の変数はオブジェクトと独立。参照型:オブジェクトへの参照を表わす。 C++ の変数は通常、全てオブジェ…

C++/CLI_ハンドルについて

概要 インスタンスを gcnew 演算子によって生成すると、演算子はポインタではなくハンドルを返す。 ハンドルとは共通言語ランタイムによって管理されているオブジェクトを表し、基本的な考え方はポインタと同じだが、ポインタのようなアドレスの演算は行えな…

C++/CLI_宣言のアスタリスク * と ハット ^

分からなくなった。 * ポインタ型 C++ では、new でインスタンスを作成し、アスタリスク * がついたポインタ変数に格納。ポインタが格納。 ^ ハンドル型 C++/CLI ではインスタンスを「gcnew」で作成し、ハット ^ がついたハンドル変数に格納。 これによりガ…

C++_assert とは

C++/CLI でも C#++ でも使えるもよう。assert:主張する。 assert は、その関数を呼び出すユーザに対して要件を表明できる。 ex )「関数の引数がある範囲内の値でなければならない」→ assert ( 10 < a < 100 ) 「ある状態でこの関数を呼び出してはならない」…

C++/CLI の基礎

いろいろメモ。デリゲート調べてたら分からなくなった。 C++/CLI とは CLI 向けに C++ を拡張したプログラム言語。 CLI :Common Language Infrastructure共通言語基盤。 CLR :Common Language Runtime共通言語ランタイム。CLI 仕様の .Net Framework アプ…

C++/CLI_#pragma once とは

前 C++/CLI のカテゴリー作ろうと思ったら登録できなかったのに今できるし。編集するのめんどくさいんだよ…。 ソースファイルをコンパイルする際、ファイルが 1 回だけ取りこまれるようにする。 #include guard と同様の効果。 ( プリプロセッサのマクロ定義…

C++/CLI_ C# との間で List の受け渡し

ex ) List は int 配列 C# List<int[ ]> get = Native.Test.Hoge(pictureBox.Image as Bitmap);// var get でも ok C++/CLI namespace Native{ public ref class Test { public: static System::Collections::Generic::List<array <int>^ >^ Hoge() { auto list = gcnew System::</array></int[>…

C++/CLI_ C# の List 要素を追加する

C++/CLI で、C# の List を扱った時、要素追加が出来ずに時間をくってしまった。 C# では list.Add(x) だが、 C++/CLI では list->Add(x) 。 ex ) auto list = gcnew System::Collections::Generic::List<array<int> ^ >(); array<int> ^ a = gcnew array<int>(2); a[0] = 10; a[1</int></int></array<int>…

C++/CLI_ C# の List と PointF を扱う

auto を使った方がソースは見やすいかも。ex ) は int 型の List System::Collections::Generic::List<int> ^ hogaList = gcnew System::Collections::Generic::List<int>(); //auto ^ hogaList = gcnew System::Collections::Generic::List<int>(); System::Drawing::Point</int></int></int>…

C++/CLI_ List に要素を追加する

結論から。 hogeList->Add( xxx ); ソース System::Collections::Generic::List<int> ^ hogeList = gcnew System::Collections::Generic::List<int> ( ); //または //auto hogeList = gcnew System::Collections::Generic::List<int>( ); hogeList->Add(10); hogeList->Add(</int></int></int>…

C++/CLI_ ref とは

C++/CLI のカテゴリーが登録できない。C++ [ / ] ではじかれる。 結論 参照クラス ( マネージクラス ) は ref で宣言する。 マネージクラス ( C ++/C LI ) を作成すると、[ public ref class HogeClass ] と ref がつく。この ref は マネージクラスですよ、…

C++/CLI_ C++ の DLL 作成 (Ver プロジェクト)

※ C # から使う。 下記手順ではC ++ のクラスはまだ作っていない。C # から C++ で書いた関数を呼び出すために仲介者として C ++/CLI のクラスを作っている。 C ++ のクラスを作成したい場合、C ++/CLI のクラスを作成する際には[ マネージ ] にチェックを入…

C++/CLI_ CLI と CLR

分からなくなる。 C L I:共通言語基盤 ( Common Language Infrastructure )C L R:共通言語ランタイム ( Common Language Runtime ) C L I M icrosoft 社の「 M icrosoft.Net 」のプログラム実行環境の仕様。M icrosoft.NET:動作環境を提供するシステム基…

C++/CLI_ CTSとは

共通型システム Common Type Systsem プログラム言語に依存しない言語共通のデータ型を提供する為の仕組み。 中間言語 ( MSIL ) ならびに共通言語ランタイム ( CLR ) の中核となる機能。 C# のデータ型もこの共通型システムを基盤としている。 スタックメモ…

C++/CLIとは ( 追記 )

Managed C ++ の後継言語。 Managed C ++ とは .NET Framewor k は Microsof t が設計した、共通中間言語( Common Intermediate Language / CIL ) と呼ばれる、言語を実行する仮想マシン 環境 ( ランタイム ) のこと。 ネイティブシステムを抽象化するシステ…

C++ と C# と C++/CLI

C ++ C 言語の拡張として開発されたプログラミング 言語。C 言語との互換性がある。故に開発で一緒によく使われている。C ++を使うためには、C 言語の知識は必須。 標準C ++・ネイティブC ++ (上記の C ++ のこと) C 言語とネイティブC ++ がプログラミング …