はじめに 筆者は、C++ で作ったDLLを C# アプリケーションから呼び出して使う事があります。その際、C/C++ で書かれた DLL と C# アプリケーションを連携させるうえで、C++のDLLからのコールバック、つまり ネイティブコード → C# の呼び出し(リバース P/Invoke)は必須であり、重要なポイントとなります。 本記事では、.NET 7 で登場し、.NET 8、.NET 9 でさらに進化した LibraryImport を活用したコールバックの実装方法を解説します。 1. さらに進化した P/Invoke: LibraryImport 1.1 DllImport と LibraryImport の違い DllImport(.NET Framework 1.0 から存在) 開発者が手動で設定を行うため、マーシャリングや呼び出し規約の誤りによる実行時エラーが起こりやすい。
