BETA

C++の関数をC#から呼び出す

投稿日:2019-12-04
最終更新:2019-12-04

もっと綺麗に出来る方法はあるはず(多分)

やりたいこと

C++の関数をC#から呼び出したい。

3分クッキング

1.まず、お手元にあるC#のPJにプロジェクト追加でC++のライブラリプロジェクト。

2.C#受け口を作成します。
ヘッダーファイルが

namespace CPPWrapper {  

    public ref class WrapperClass  
    {  
    public:  
        void Test(cli::array<System::Char>^ result);  
    };  
}  

cppが

void CPPWrapper ::WrapperClass::Test(cli::array<System::Char>^ result)  
{  
    pin_ptr<System::Char> p_srcdst = &result[0];  
    int i = 0;  
    wstring message = "ほげふが";  
    for (i = 0; i < message.size(); i++)  
    {  
        p_srcdst[i] = message[i];  
    }  
    p_srcdst = nullptr;  
}  

3.最後にC#から呼びましょう

WrapperClass wrapper = new WrapperClass();  
char[] chrs = new char[1024];  
wrapper.Test(chrs);  

4.chrsに文字列が入っているので、それを操作する。

感想

cli::array

これが見つからなくて、大分苦労しました。

参考にしたサイト

https://waku-take-a.github.io/%25EF%25BC%258804%25EF%25BC%2589C%2523%25E3%2581%258B%25E3%2582%2589%25E3%2580%2581C%252B%252B%25E3%2581%25AE%25E9%2596%25A2%25E6%2595%25B0%25E3%2581%25AE%25E5%25AE%259F%25E8%25A1%258C%25EF%25BC%2588%25E3%2582%25AF%25E3%2583%25A9%25E3%2582%25B9%25EF%25BC%2589.html

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

メモ記事

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう