C++/CLI

MatAllocatorとGC

この記事はOpenCV Advent Calendar 2015の9日目の記事です。初めてこういうのに参加します。 qiita.com 目次 筆者の環境 ネタ概要 C++/CLIによるラッパークラス メモリ不足になるシーン メモリ使用量を見てみる MatAllocatorを自作する MatAllocatorについて…

unmanagedクラスにmanagedなメンバを持たせる

以下のコードはビルドできません。「マネージ 'hoge' をアンマネージ 'Native' で宣言できません。」というメッセージが出ます。 class Native { public: StringBuilder^ hoge; }; managedな変数hogeがGCによって移動された場合に、unmanagedなクラスではそ…

PLAYSTATION Eye を.NET Frameworkから使う

PLAYSTATION Eye について PlayStation3用のカメラとして、「PLAYSTATION Eye」というものがあります。PLAYSTATION Eye(CEJH-15001)出版社/メーカー: ソニー・コンピュータエンタテインメント発売日: 2008/07/24メディア: Video Game購入: 4人 クリック: 110…

cvRedirectErrorはOpenCV2.0では使えない?

先日実装したOpenCvSharpのエラーハンドリング機能ですが、早くも暗雲が立ち込めております。

独自のmarshal_as/marshal_contextの定義

marshal_as, marshal_contextについては、以前に文字列の変換における利用方法を書きました。今回は独自の変換を行う方法について書きます。

ヌルポインタ

C#使っているくせにポインタが絡むことばかりやっていて、なんだかなあと思う今日この頃。 C# unsafeコード中でのヌルポインタについて。C/C++では、NULLすなわち0という整数値をそのままポインタ変数に代入できましたが、C#は型にうるさいのでできません。…

C++/CLIで拡張メソッド

は、どうも無理っぽいです。そりゃそうだと納得するしかないですが。 System.Core.dllを参照に加えたうえで、こんなコードを書いてみます。VB.NETでの拡張メソッドの定義に準じたつもりです。 public ref class MyExtensions abstract sealed { public: [Sys…

marshal_as, marshal_context

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>…

msvcr90.dll

C#で作ったDLLからC++/CLIで作ったDLLを呼び出すと、FileNotFoundExceptionが発生して、このところ途方にくれていました。 FileNotFoundExceptionというと、読み込むテキストファイルや画像ファイル等がないときに発生するというイメージでしたが、これはDLL…

C++/CLIでの定数の定義 改

id:Schima:20090228 で、C++/CLIにてinitonlyにより定数っぽいもの(readonly)を定義する方法をご紹介しましたが、やはり厳密な意味での定数ではないために困ることがあります。この方法では、コンパイル時に定数が必要な場合には使えません。 例えばenumの初…

納得いかないこと

最近プログラムを書いていてちょっと納得いかなかったことをいくつか。

C++/CLIでの定数の定義

クラスのメンバに定数を、すなわちpublicでstaticでconstな値を定義するとします。C++的な考えでC++/CLIで定義してみるとこうなるでしょう。 public ref class Const abstract sealed { public: static const Int32 HOGE = 123; }; しかしこれをC#側から定義…

.NET Frameworkの例外一覧

例外を投げたいとき、「この場合だとどの例外を投げるのが適切なんだろう?」と悩むことが良くあります。すぐ出てくるのはArgumentException, ArgumentNullException, FileNotFoundExceptionぐらいで、他はパッと出てこないのでただのExceptionを投げて誤魔…

x64環境でのOpenCvSharp

最近研究室のPCが64bit版のWindows Vistaになったのですが、それからというものOpenCvSharpを呼び出している研究のプログラムがBadImageFormatExceptionを吐いて全く動かなくなってしまいました。 あれ?.NETってそういう環境の違いうまく吸収してくれるんじ…

C++/CLIのキーワードページを作成

「はてなダイアリー市民」とやらに最近なりまして、キーワードの作成ができるようになったので、作ってみました。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さえ知って…