C++ CLRで記述したアプリケーションからCOMインターフェースを使用しようとすると「C2872: 'IServiceProvider': あいまいなシンボルです。」のコンパイルエラーが表示される。これは.NETのSystem.IServiceProviderとシンボルが重複しているのが原因です。 この問題を回避するには"using namespace System"よりも手前にヘッダファイルの#includeを記述します。
OpenCVでカメラからのキャプチャを行うような事をC++/CLIでやろうとしています。で、まあリソース管理の為のコードを書くのは避けて通れない訳で、Disposeパターンに従って作ろうとしたら、public: virtual void Dispose(bool);が通らない......予約されていると? と思って見てみたら、こんなページがMSDN Libraryにありました。 Destructors and Finalizers in Visual C++ URIが日本語用(ja-jp)なのに翻訳されていないというのはとりあえず置いておいて、C#に慣れた頭で読んでみると驚きの連続でした。ついでに眠いせいか難しい。一通り読んだだけでは収拾がつかないので、デストラクタ(Wikipedia)なども見つつ重要そうな所を僕なりにちょっとまとめてみます。 C++/CLIにおけるデストラクタとファイナ
id:Schima:20090228 で、C++/CLIにてinitonlyにより定数っぽいもの(readonly)を定義する方法をご紹介しましたが、やはり厳密な意味での定数ではないために困ることがあります。この方法では、コンパイル時に定数が必要な場合には使えません。 例えばenumの初期値にはconstな値が必要です。よって、以下のコードはコンパイルが通りません。 // C++/CLIで定数の定義 public ref class Const abstract sealed { public: static initonly Int32 Hoge = 111; }; // C#でenumの定義 enum MyEnum { Hoge = Const.Hoge // 定数が必要なのでダメ } そこで、また新しいキーワードliteralを使います。意味は読んで字のごとくです。C++/CLIはず
最近 C++/CLI を弄っているのですが,GUI 以外の部分は通常の C++ で記述しているので,どうしても System::String^ と std::string (, or std::wstring) の相互変換が必要になります.ぐぐって見たところ同様の要望は多いようで,各所で解決方法も記載されていました.それで,せっかくなので System::String^ <-> std::string をキャストに見せかけた関数を作成しておくことにしました. #include <string> #include <vcclr.h> /* ----------------------------------------------------------------- */ // string_converter /* ------------------------------------
typedef int (*sqlite3_callback16)(void*,int,__wchar_t**, __wchar_t**); int sqlite3_exec16( sqlite3 *db, /* The database on which the SQL executes */ const __wchar_t *zSql, /* The SQL to be executed */ sqlite3_callback16 xCallback, /* Invoke this callback routine */ void *pArg, /* First argument to xCallback() */ __wchar_t **pzErrMsg /* Write error messages here */ ){ int rc = SQLITE_OK; const __wc
Visual C++ 2005とC++/CLIという解決 新しいプログラム言語であるC++/CLIは、C++マネージ拡張の進化形と位置付けることができる。しかし、単なる進化形ではない。現在、ヨーロッパの工業標準化団体であるECMAによって標準言語として制定作業中である。もちろん、標準を名乗る以上、C++/CLIが対象とする実行環境はWindowsでも.NET Frameworkでもなく、国際規格である「ISO/IEC 23271:2005, Common Language Infrastructure(CLI)」である。 C++/CLIが、Visual Basic .NETと同じように「C++/.NET」というネーミングではない理由はここにある。対象としている実行環境がCLIなので、C++/CLIという名前になるのである。つまり、CLIの実装あるところどこでもC++/CLIは利用可能となる
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く