「ライブラリの基礎 - C++DLL」の版間の差分
ナビゲーションに移動
検索に移動
→サンプルコード
| 133行目: | 133行目: | ||
SampleFunc03 @3 | SampleFunc03 @3 | ||
</source> | </source> | ||
<br> | |||
次に、C# EXE側でC++ DLLを呼び出す方法を記述する。 | 次に、C# EXE側でC++ DLLを呼び出す方法を記述する。<br> | ||
文字列をC++ DLL側に渡す場合は、string型を使用する。 | 文字列をC++ DLL側に渡す場合は、string型を使用する。<br> | ||
文字列をC++ DLL側から返す場合は、string型ではなくStringBuilderクラスを使用する必要がある。 | 文字列をC++ DLL側から返す場合は、string型ではなくStringBuilderクラスを使用する必要がある。<br> | ||
StringBuilderクラスは受け渡しの両方が可能なので、文字列はStringBuilderクラスを使用すべきである。 | StringBuilderクラスは受け渡しの両方が可能なので、文字列はStringBuilderクラスを使用すべきである。<br> | ||
<br> | |||
C++では構造体のサイズはコンパイル時に決定されるが、C#では実行時に決定される。 | C++では構造体のサイズはコンパイル時に決定されるが、C#では実行時に決定される。<br> | ||
したがって、C#側で構造体のサイズを予め指定する必要がある。 | したがって、C#側で構造体のサイズを予め指定する必要がある。<br> | ||
この場合、構造体は固定長サイズとなるため、配列などを定義する場合は異なるサイズの配列を後からインスタンス化することができなくなる。 | この場合、構造体は固定長サイズとなるため、配列などを定義する場合は異なるサイズの配列を後からインスタンス化することができなくなる。<br> | ||
<source lang="c#"> | <source lang="c#"> | ||
using System; | using System; | ||