「ライブラリの基礎 - C++DLL」の版間の差分
ナビゲーションに移動
検索に移動
→サンプルコード
84行目: | 84行目: | ||
void __stdcall SampleFunc03(int a, char *pstr) | void __stdcall SampleFunc03(int a, char *pstr) | ||
void __stdcall SampleFunc04(SampleStruct st) | void __stdcall SampleFunc04(SampleStruct st) | ||
void __stdcall SampleFunc05(SampleStruct *pStructure) | |||
</source> | </source> | ||
<source lang="c++"> | <source lang="c++"> | ||
174行目: | 175行目: | ||
したがって、C#側で構造体のサイズを予め指定する必要がある。<br> | したがって、C#側で構造体のサイズを予め指定する必要がある。<br> | ||
この場合、構造体は固定長サイズとなるため、配列などを定義する場合は異なるサイズの配列を後からインスタンス化することができなくなる。<br> | この場合、構造体は固定長サイズとなるため、配列などを定義する場合は異なるサイズの配列を後からインスタンス化することができなくなる。<br> | ||
<br> | |||
構造体をC++ DLL側から返す場合、IntPtr型からdouble型の配列を取得するときは、一度Int64型に変換し、これをBitConverter.Int64BitsToDouble()メソッドでdouble型に変換する。<br> | |||
<source lang="c#"> | <source lang="c#"> | ||
using System; | using System; |