2005-07-01から1ヶ月間の記事一覧

IME関連

Aleaさんのとこから(http://d.hatena.ne.jp/alea/20050715#p1)。 コンソールアプリ中でウィンドウハンドルを渡すという話があったので、コンソールウィンドウにユニークなタイトルを付けてFindWindowでハンドルを入手してみたけど、Imm系の関数呼び出しは失…

.NET2.0対応版

現在、Nemerleプロジェクトは.NET2.0のGenerics対応がメインになっているようなので、そっちを追っかけてみることに。ところが、このGenerics版は.NET2.0β2にバグがあってSVNからチェックアウトしたMonoでないとビルド出来ません。そのMonoもcscだとWin32Exc…

Null参照からメソッド呼び出し

先ずはサンプルから。 using namespace System; ref class Calculator { int dummy; public: // インスタンスメンバにアクセスしない void add() { Console::WriteLine("add"); } // インスタンスメンバにアクセスする void subtract() { dummy = 0; Console…

covariant の戻り型

C++で出来てC++/CLIで出来ないことをちまちま調査。 ref class B { public: virtual B^ clone() { return gcnew B(); } }; ref class D : B { public: virtual D^ clone() override { return gcnew D(); } }; void main() { D^ d = gcnew D(); D^ d1 = d->cl…

svnからのビルド

なんか、cscで失敗する。それだけならいいんですが、データ実行防止(DEP)に引っかかる。Althon64な所為? 取りあえずMSにエラー報告を送信してみた。(^^;

STL.NETはC#から使えるか?

そろそろ話題も無くなってきたのでネタ企画。(^^;まず、テンプレートライブラリはヘッダで提供されているので、当然C#から使えないのでコンパイルしてアセンブリにしなければなりません。また、STL.NETのクラスはプライベートな型になっていてアセンブリの外…

STL.NETとコレクションの相互運用

STLは素晴らしいライブラリですが、.NET Frameworkにもコレクション(System.Collection.Generic)があり、C++/CLI以外の言語も使う場合にはコレクションを使った方が何かと都合が良かったりします。STL.NETではその辺にも配慮されています。 void test() { ve…

コマンドラインからコンパイル

今頃する話題なのか?(^^;exeを作る $ cl /clr:safe /Fexxx.exe yyy.cpp dllを作る $ cl /clr:safe /LD /Fexxx.dll yyy.cpp /clrだけでマネージドなアセンブリになりますが、Monoで実行するには/clr:safeにする必要があります。(詳しく調べてないけど・・・)…

STL.NET - vector

http://www.microsoft.com/japan/msdn/vs05/visualc/stl-netprimer.aspを読みながらSTL.NETでも弄ってみようかと思ってましたが、なんか上手く行かないです。cli/vectorがcliext/vectorになっているとかはいいのですが、 sort( &arr[0], &arr[ arr->Length ]…

インタフェース

C++/CLIだとインタフェースの明示的実装に制限がありそ。それともバグかしら? しかし、インタフェースの明示的実装周りはWorking Draft1.9(2005/1)と結構変わっています。まだ、言語仕様固まってないのかなぁ・・・ #include "stdafx.h" using namespace Sy…

続インタフェース

プロパティを含んだインタフェース。あと、プロパティのアクセス修飾子も。 #include "stdafx.h" using namespace System; interface class IFoo { // getのみ property int Bar { int get(); } // setのみ property int Baz { void set(int value); } // ge…

クラス色々

なんか間違って消してしまったので貼り直し。(^^;C#と同じくらい簡単に書けるよーになった云々とか書いた記憶が。イベントをいちいちnullptrチェックしなくていいのは良いですね。 #include "stdafx.h" using namespace System; // デリゲート delegate void…

値型

C#におけるstructとenumですが、C++/CLIではvalue class/structとenum class/structになっています。C++ではstruct/classの違いはデフォルトのアクセスがpublicなのかprivateかの違いだけなんですが、列挙型でprivateにされても困るのでenum classもenum str…

interior_ptr

マネージドなポインタと考えればいいのかな? #include "stdafx.h" #include <cstdio> using namespace System; void equals_val(String^% s1, String^% s2) { // Stringの値を比較 Console::WriteLine(s1 == s2); } void equals_ref(String^% s1, String^% s2) { //</cstdio>…

配列

C++/CLIの配列は[ ]ではなく、arrayキーワードを使います・・・って、もう何度も使っているので今更感漂いますが。(^^; #include "stdafx.h" #include <cstdio> using namespace System; void print_array(array<int>^ args) { for each (int n in args) printf("%d ", n)</int></cstdio>…

続配列

http://d.hatena.ne.jp/akiramei/20050630#p1で、^(トラッキングハンドル)を付けないとスコープから外れたら自動的にDisposeが呼ばれることに大喜びしていましたが、配列の場合はどーなるんでしょうか? #include "stdafx.h" using namespace System; ref cl…

C++/CLIの型

今月はC++/CLIに力を入れることにして、先ずは型から。charがSByteだったりlongがInt32だったりするのに違和感がある。C#に毒されているなぁ。(^^; #include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { // C#のtypeof(int)はC++/CLIではin</system::string>…

const char* -> String

昨日の日記でconst char*からStringへの変換にPtrToStringAnsiを使いましたが、考えてみたらStringのコンストラクタはconst char*を取りましたよね。(^^; #include "stdafx.h" using namespace System; using namespace System::Runtime::InteropServices; v…