C++/CLI
この記事はOpenCV Advent Calendar 2015の9日目の記事です。初めてこういうのに参加します。 qiita.com 目次 筆者の環境 ネタ概要 C++/CLIによるラッパークラス メモリ不足になるシーン メモリ使用量を見てみる MatAllocatorを自作する MatAllocatorについて…
以下のコードはビルドできません。「マネージ 'hoge' をアンマネージ 'Native' で宣言できません。」というメッセージが出ます。 class Native { public: StringBuilder^ hoge; }; managedな変数hogeがGCによって移動された場合に、unmanagedなクラスではそ…
PLAYSTATION Eye について PlayStation3用のカメラとして、「PLAYSTATION Eye」というものがあります。PLAYSTATION Eye(CEJH-15001)出版社/メーカー: ソニー・コンピュータエンタテインメント発売日: 2008/07/24メディア: Video Game購入: 4人 クリック: 110…
先日実装したOpenCvSharpのエラーハンドリング機能ですが、早くも暗雲が立ち込めております。
marshal_as, marshal_contextについては、以前に文字列の変換における利用方法を書きました。今回は独自の変換を行う方法について書きます。
C#使っているくせにポインタが絡むことばかりやっていて、なんだかなあと思う今日この頃。 C# unsafeコード中でのヌルポインタについて。C/C++では、NULLすなわち0という整数値をそのままポインタ変数に代入できましたが、C#は型にうるさいのでできません。…
は、どうも無理っぽいです。そりゃそうだと納得するしかないですが。 System.Core.dllを参照に加えたうえで、こんなコードを書いてみます。VB.NETでの拡張メソッドの定義に準じたつもりです。 public ref class MyExtensions abstract sealed { public: [Sys…
char* と System::String^の変換の方法の備忘録。Visual C++ 2008から使用可能になったmarshal_asとmarshal_contextを使うと、Marshal::StringToHGlobalAnsiなどを使うよりも若干楽ができます。 char* -> String^ #include <msclr/marshal.h> using namespace msclr::interop;</msclr/marshal.h>…
C#で作ったDLLからC++/CLIで作ったDLLを呼び出すと、FileNotFoundExceptionが発生して、このところ途方にくれていました。 FileNotFoundExceptionというと、読み込むテキストファイルや画像ファイル等がないときに発生するというイメージでしたが、これはDLL…
id:Schima:20090228 で、C++/CLIにてinitonlyにより定数っぽいもの(readonly)を定義する方法をご紹介しましたが、やはり厳密な意味での定数ではないために困ることがあります。この方法では、コンパイル時に定数が必要な場合には使えません。 例えばenumの初…
最近プログラムを書いていてちょっと納得いかなかったことをいくつか。
クラスのメンバに定数を、すなわちpublicでstaticでconstな値を定義するとします。C++的な考えでC++/CLIで定義してみるとこうなるでしょう。 public ref class Const abstract sealed { public: static const Int32 HOGE = 123; }; しかしこれをC#側から定義…
例外を投げたいとき、「この場合だとどの例外を投げるのが適切なんだろう?」と悩むことが良くあります。すぐ出てくるのはArgumentException, ArgumentNullException, FileNotFoundExceptionぐらいで、他はパッと出てこないのでただのExceptionを投げて誤魔…
最近研究室のPCが64bit版のWindows Vistaになったのですが、それからというものOpenCvSharpを呼び出している研究のプログラムがBadImageFormatExceptionを吐いて全く動かなくなってしまいました。 あれ?.NETってそういう環境の違いうまく吸収してくれるんじ…
「はてなダイアリー市民」とやらに最近なりまして、キーワードの作成ができるようになったので、作ってみました。C++/CLIこのページが無かったなんて・・・C++/CLI流行ってないんですかね。個人的には.NETの言語の中でも最強クラスだと思うんですが。明示的…
ラッパーを書いていると当然のようにポインタが山のように出てきます。中でもcvCreateTrackbarは鬼門の一つです。定義は次のようになっています。 CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) ); int cvCreateTrackbar( const char* trackbar…
http://notiz.dyndns.org/doku.php?id=cppcli:access_modifiersあまり合ってるか自信がないです。外部からの方がアクセスできるなんてありなんでしょうか。と思ったんですが、どうもさすがにそれはないらしい??まあぶっちゃけ、publicとprivateさえ知って…