オルタナティブ・ブログ > mtaneda ブログ >

中小企業の開発者は会社で何をしているのか

C#でC++で書いたコードを流用

»
そういう時のために、C++/CLI で過去の資産を流用できるようになっているそうです。 C#が結構便利なので、C++/CLI も同じくらい便利(簡単?)だと思っていましたが、以外と面倒でした。 やりたかったのは、文字列を渡して、特殊な制御文字混じりのバイト配列で得るという処理です。 まず、文字列はインターネット上で参考になるサイトが多く、すぐに実現できました。
int Hoge::func(String ^ str_)
{
    char *str = (char*)(void*)Marshal::StringToHGlobalAnsi(str_);

    //何か処理

    Marshal::FreeHGlobal((IntPtr)(void *)buf);

    return(0);
}
これで、普通にC#から利用できます。 次に、バイト配列を受け取る点に悩みました。 こちらはMicrosoftのサイトのサンプルを参考にしました。(たしか・・・)
int Hoge::func2(String ^ str_, array^ obuf_)
{
    char *str = (char*)(void*)Marshal::StringToHGlobalAnsi(str_);
    pin_ptr p = &obuf_[0];
    char *obuf = reinterpret_cast((char *)(void *)p);

    //何か処理

    Marshal::FreeHGlobal((IntPtr)(void *)buf);

    return(0);
}
とりあえず実現できたことが出来ましたが、難しいですね。
Comment(2)