知識マップ: Ada と C / C# をつなぐ ── DLL を作って呼び出す

記事「Ada と C / C# をつなぐ ── DLL を作って呼び出す」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

AdaはC言語とのインターフェースを参照マニュアルの附属書Bに定めており、Convention => CでC ABIに合わせて関数を公開したり呼び出したりする。呼び出し規約もConventionで指定し、Win32 APIは__stdcallで呼ぶ。GPRbuildのプロジェクトでLibrary_Interfaceを指定するとスタンドアロンライブラリになり、Library_Auto_Initを有効にすれば読み込み時にエラボレーションが行われる。Windows向けにはDLLになり、GNATのランタイムのDLLとともにDLLの検索順序で見つかる場所に置く。Windowsでは、ライブラリのレベルで宣言したAdaのタスクをスタンドアロンライブラリで使えない。C#からはP/InvokeのLibraryImportかDllImportで呼び、LibraryImportは文字列の扱いをStringMarshallingで指定する。公開した関数で処理しなかったAdaの例外は、Linuxでの実験ではCでもC#でもプロセスを終了させた。

AdaとC/C#をつなぐ記事の知識マップAdaのC言語とのインターフェースがC ABIと呼び出し規約を使うこと、GPRbuildで作るスタンドアロンライブラリがエラボレーションを自動で行い、WindowsではDLLになってDLLの検索順序で探されること、C#からはLibraryImportとDllImportによるP/Invokeで呼ぶこと、処理しなかったAdaの例外が未処理例外になることを示す図。実装を担う実装を担う利用する利用する前提とするで構成できる自動化する両立しない利用する前提とする実装を担う実装を担う利用する利用する原因になり得るAdaとC/C++の相互運用(Annex B)Ada(プログラミング言語)GNATC ABI(Application Binary Interface)呼び出し規約(calling convention)Win32 APIスタンドアロンライブラリ(Stand-alone Library)GPRbuildエラボレーション(elaboration)Adaのタスク(並行処理)DLL(ダイナミックリンクライブラリ)DLLの検索順序LibraryImportP/InvokeDllImportStringMarshalling未処理例外

概念間の関係(全15件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

AdaとC/C++の相互運用(Annex B)
Ada参照マニュアルの附属書Bで標準化された、C・Fortranなど他言語とのインターフェース機構。ImportやExportで双方向の呼び出しができる。
Ada(プログラミング言語)
1970年代後半にアメリカ国防総省の主導で標準化された、強い型付けと高信頼性を重視する汎用プログラミング言語。最新標準はAda 2022。
GNAT
GCCに含まれる無償のAdaコンパイラで、Adaの代表的な処理系。
Win32 API
Windowsのネイティブなアプリケーション開発向けAPI群。
スタンドアロンライブラリ(Stand-alone Library)
GPRbuildのライブラリプロジェクトでLibrary_Interfaceに外部へ見せるユニットを指定して作るAdaのライブラリ。初期化と終了処理の手続きを持ち、Ada以外の言語のプログラムから使える。
Adaのタスク(並行処理)
スレッドをOSのAPIやライブラリに頼らず、言語仕様に組み込む形で提供するAdaの並行実行単位。
DLL(ダイナミックリンクライブラリ)
実行時に読み込まれ、関数やデータを他のモジュールと共有できるWindowsのバイナリモジュール。
LibraryImport
.NET 7で追加された、partialメソッドに対しコンパイル時にP/Invokeのマーシャリングコードを生成するソースジェネレーター。
DllImport
P/Invoke宣言に対して実行時にランタイムがマーシャリング用のILスタブを生成する、従来からの属性ベースの仕組み。
P/Invoke
C#などの.NETコードからアンマネージドなC関数群を呼び出すための、.NETの標準的な相互運用機構。

機械可読データ

このデータセットについて

作成
合同会社小村ソフト
ライセンス
CC BY 4.0 ── 出典(合同会社小村ソフト)とライセンスへのリンクを明示し、改変した場合はその旨を示すことを条件に、再配布・改変を含めて再利用できます
最終確認日
2026-11-01 ── 収録する関係のうち、最後に出典と照合した日

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。