Tweet
Unityで使うC#/DLLマーシャリング事典
1,980円 (1,800円+税)
本書はUnityに特化した、マーシャリング(C#とネイティブライブラリ間でのデータ交換処理)の解説書です。.NET Frameworkでのマーシャリングについての情報は多く見られますが、Unityを対象としたものは少ないのが現状です。本書では多くのケースを紹介しており、事典としてお使いいただけます。
関連サイト
本書の関連ページが用意されています。
内容紹介
本書はUnityに特化した、マーシャリング(C#とネイティブライブラリ間でのデータ交換処理)の解説書です。ゲームエンジンUnityを使いつつC#でネイティブDLL(.so)を使う際、マーシャリングで苦戦してはいないでしょうか? .NET Frameworkでのマーシャリングについての情報は多く見られますが、Unityを対象としたものは少ないのが現状です。本書では多くのケースを紹介しており、事典としてお使いいただけます。
書誌情報
- 著者: 山田 英伸
- 発行日: 2021-01-15 (紙書籍版発行日: 2021-01-15)
- 最終更新日: 2021-01-15
- バージョン: 1.0.0
- ページ数: 78ページ(PDF版換算)
- 対応フォーマット: PDF, EPUB
- 出版社: インプレス NextPublishing
対象読者
Unity,マーシャリング,ゲーム,DLLに興味がある人
著者について
山田 英伸
サークル「すらりんラボ」代表。グラフィックスAPIのプログラミングを主とした技術同人誌の執筆活動を行う。CEDEC 2020では、「技術同人作家になろう ~働き方改革時代におけるエンジニアのレベルアップの一例~」をテーマに講演を行う。
目次
目次
第1章 はじめに
- 1.1 対象読者
- 1.2 なぜ マーシャリングが必要になるのか
- 1.3 前提条件
- 1.4 動作環境
- 1.5 免責事項
- 1.6 参考文献
第2章 マーシャリング基礎
- 2.1 マーシャリングとは
- 2.2 マーシャリングの基本動作
- 2.3 Blittableと非Blittable
- 2.4 ネイティブ関数を呼び出す方法
- 2.5 方向属性(In/Outアトリビュート)
- 2.6 呼び出し規約
- 2.7 インターフェースの形式
- 2.8 大まかな指針
第3章 簡単なマーシャリング
- 3.1 プリミティブ型:引数にセットして関数呼び出し
- 3.2 プリミティブ型:引数で結果を受け取る場合
- 3.3 プリミティブ型:関数戻り値の場合
第4章 構造体のマーシャリング
- 4.1 構造体の定義
- 4.2 BOOL/bool型の注意点
- 4.3 構造体:引数にセットして関数呼び出し
- 4.4 構造体:引数にセットして関数呼び出し(2)
- 4.5 構造体:引数で結果を受け取る場合
- 4.6 構造体:関数戻り値の場合
- 4.7 構造体:関数戻り値(ポインタ)の場合
- 4.8 共用体
第5章 配列のマーシャリング
- 5.1 プリミティブ型:引数関数呼び出し
- 5.2 プリミティブ型:呼び出し先で配列内容を変更
- 5.3 プリミティブ型:戻り値の場合
- 5.4 構造体配列:引数関数呼び出し
- 5.5 構造体配列:呼び出し先で配列内容を変更
第6章 文字列の表現
- 6.1 Windows開発環境の文字エンコーディング
- 6.2 LinuxやAndroid、iPhoneの場合
- 6.3 .NET FrameworkとMonoの実行系による違い
- 6.4 Monoによる文字列引数の呼び出しを観察する
- 6.5 実行ランタイム違いへの対策
- 6.6 Win32APIの呼び出しについて
第7章 文字列の変換
- 7.1 文字列をShift-JISのバイト列へ変換
- 7.2 Shift-JISのバイト列から文字列へ変換
- 7.3 文字列をUTF-8のバイト列へ変換する場合
- 7.4 文字列をUTF-16のバイト列へ変換する場合
- 7.5 文字列をUTF-32のバイト列へ変換する場合
- 7.6 UTF-32のバイト列から文字列へ変換
- 7.7 IntPtrのデータ先の長さを求める
- 7.8 IntPtr(UTF-8バイト列)からの文字列化
- 7.9 IntPtr(UTF-16バイト列)からの文字列化
- 7.10 IntPtr(Shift-JISバイト列)からの文字列化
- 7.11 IntPtr(UTF-32バイト列)からの文字列化
- 7.12 メモリーの割り当てに関する注意事項
第8章 文字列のマーシャリング
- 8.1 文字列型:引数にセットして関数呼び出し
- 8.2 文字列型:引数で結果を受け取る場合
- 8.3 文字列型:引数で結果を受け取る場合(2)
- 8.4 文字列型:関数戻り値の場合
- 8.5 文字列配列型:引数関数呼び出し
- 8.6 文字列配列型:呼び出し先で配列内容を変更
第9章 上級マーシャリング
- 9.1 ビットフィールドを使用している場合
- 9.2 プリミティブ型の2次元配列の場合
- 9.3 構造体中に構造体がある場合
- 9.4 構造体中に配列(固定長)がある場合
- 9.5 構造体中に配列(可変長)がある場合
- 9.6 構造体中に文字列(固定長)がある場合
- 9.7 構造体中に文字列(固定長)がある場合(2)
- 9.8 構造体中に文字列(可変長)がある場合
- 9.9 構造体中に文字配列がある場合
- 9.10 C#の関数をDLLに渡す場合
- 9.11 DLL関数から関数ポインタが返る場合
- 9.12 DLL関数から関数ポインタが返る場合(2)
- 9.13 構造体中に関数ポインタがある場合