渋谷ほととぎす通信

新しいこと、枯れたこと問わず大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。

C#からC++(DLL)にintを渡す


VisualC++で作成したDLLをC#からintを渡すということをやります。

環境構築は前回記事を参考にどうぞ。 www.shibuya24.info

C++側は値で受け取る

C++側のコードから載せますが、前回文字列を渡す際はポインタで受け取っていましたが、C#からプリミティブ型を渡す際は、ポインタではなく値型で受け取ります。
gist.github.com

C#側は特に何も考えず文字列の時と同様

[DllImport("TestDll.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void TestInt(int value);

static void Main()
{
    TestInt(999);
}

このようにC#側からは特に何も気にせずintを渡すだけです。

CallingConvention = CallingConvention.Cdeclについて

アンマネージドのDLLをインポートする箇所について、前回言及しませんでしたが、DllImportで指定しているコレCallingConvention = CallingConvention.Cdeclは、.NET4.0以降の環境では必須でつけないといけません。
つけないとビルドが通りません。


以上です。

参考