graphics.hatenablog.com

テクニカルアーティストの技術を書き殴るためのメモ帳

C# から C++/CLI 経由で C++ を使ってみる。

最近何かとやりたいことが多いせいか、どうにも気が散っていけない気がする。

まぁいいや。
手許で軽く実験してたので、軽くメモがてら。

レイヤ構造をちゃんと確認できるフリーの Photoshop ビューアって、
ざっと探してみたんだけど、なかなか見つからない。。
ので、つくってみることにしたんだけど、そこで嵌ったメモ。

ファイルは ここ


まず試したのは C#C++/CLI のプロジェクトをつくって、
C# から C++/CLI でつくった dll を呼び出す方法。
とはいえ C++/CLI は詳しくないし、
インターフェイスだけあわせて marchal_as() で誤魔化してみた。
こんなかんじ。

void hoge(String^ s) {
  std::string ss = msclr::interop::marshal_as<std::string>(s);

で、途中までやってみて気付いたんだけど、これ、デバッグできない。。

f:id:hal1932:20130612214618j:plain

構造体の中身がみれないってどういうこと……。

仕方ないから、C++/CLI の dll から更に C++ の lib を呼び出すことにした。
同じソリューション内に lib プロジェクトをつくっちゃうと
やっぱり同じようにデバッグできないから、別プロジェクトで。

そうすると今度は C# (C++/CLI) 側から C++ の中身をデバッグできなくなったから、
両方を行き来するのに、C++ 側は lib とは別に、同じソースコードを参照する
デバッグ用の exe プロジェクトを用意することになった。

めんどくさいなぁ。。