kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

C++/CLIつかいはじめ

最初はとっつきにくそーだなーと思っていたけれど、使ってみると案外そうでもない。ただ、アンマネージとマネージを混在させて*1書いていると、ものすごく間違う(^^;。これがたとえばJavaC++をプロジェクト単位でいったりきたりとか、C#C++(Native)をいったりきたりだと、一度間違えてしまえば頭を切り替えることもまだできるのだけれど、C++/CLIだと共存するので、なかなか大変。
Windows.hをincludeすると、System::IO::Path::GetTempPath()がWindows APIのGetTempPathW()と勘違いされてしまう(Path::GetTempPath()をフル修飾してもだめ)。きっと私の何かが間違っているのだろう。Windows API使うかと思って入れていたけれど、必要ないことがわかったので、Windows.hをはずして続行中。今心配なのがアンマネージリソースの開放を忘れないかということ。
もう一つ馬鹿な間違い。C#で作ったコレクションがC++/CLIのfor each inでコンパイルエラーになる。かなり首をかしげていたんだけれど、単にGetEnumerator()のスペル間違えていただけだったorz。ああはずかしい…*2

*1:そのために存在するんだけど

*2:smart tag使わなかったから