試験公開中

このエントリーをはてなブックマークに追加

Unityで使うC#/DLLマーシャリング事典

インプレス NextPublishing

1,980円 (1,800円+税)

本書はUnityに特化した、マーシャリング(C#とネイティブライブラリ間でのデータ交換処理)の解説書です。.NET Frameworkでのマーシャリングについての情報は多く見られますが、Unityを対象としたものは少ないのが現状です。本書では多くのケースを紹介しており、事典としてお使いいただけます。

関連サイト

本書の関連ページが用意されています。

内容紹介

本書はUnityに特化した、マーシャリング(C#とネイティブライブラリ間でのデータ交換処理)の解説書です。ゲームエンジンUnityを使いつつC#でネイティブDLL(.so)を使う際、マーシャリングで苦戦してはいないでしょうか? .NET Frameworkでのマーシャリングについての情報は多く見られますが、Unityを対象としたものは少ないのが現状です。本書では多くのケースを紹介しており、事典としてお使いいただけます。

書誌情報

  • 著者: 山田 英伸
  • 発行日: (紙書籍版発行日: 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 構造体中に関数ポインタがある場合

あとがき

謝辞

Home 書籍一覧 Unityで使うC#/DLLマーシャリング事典 ▲ ページトップへ戻る