はじめに これは C# Advent Calendar 2017 の 25 日目の記事です。 C++ で記述したクラスのインスタンスメソッド (インスタンスを生成し、そのインスタンスを指定して実行できるメソッド) を C# から P/Invoke で呼ぶ方法について書いていきます。 元々は 1 年ほど前、私が Unity のネイティブプラグインを開発する際に、どうしてもネイティブ側の実装で C++ のクラスを定義し、そのインスタンスを直接 C# 側で管理する構造にしたかったのが発端になります。 Unity は Mono であり C++/CLI が使えるわけではなく、かといっていちいち一つずつ関数を export してそれを DllImport で読み込ませるのも面倒。また、考え方としてネイティブ側のリソースを一つのクラスにとりまとめ、生存管理をまとまったインスタンス単位で行った方が自然と思
はじめに C++/CLI はフェードアウトな雰囲気が非常に漂っていますが、過去の資産を継続して使わなくてはいけないなど避けられないケースもまだまだありそうに思います。実際、ネイティブとのバインディングには便利ですからね・・・ 一方 C# は現在においても革新が続いており、特に C# 7 以降はその改善速度が非常に上がってきています。 C++/CLI は C# (マネージ側) ~ネイティブとのバインディングに使う事が主な用途だと思いますので、実際に使う C# 側から扱いやすいように便利な記述に対応したいと考えるわけです。特に値型の参照渡し関連はパフォーマンスにも影響があるので是非使いたい。 ということでどこまで対応できるかやってみました。 C# 7 、としていますが C# 7 以上 8 未満のものを扱います。 原理 C# の言語拡張は絶えず続いていますが、実際にビルドして出力されるバイナリ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く