別の言語で呼び出し可能な win32api(dll) を作成するにはどうすればよいですか? 例:
Ruby を使用している場合は、C# または C++ で記述された dll を使用する必要があります。では、そのような動的ライブラリを作成するにはどうすればよいでしょうか?
C++ DLL と C# DLL には重要な違いがあります。
__declspec(dllexport
C++ では、Ruby から呼び出すことができるグローバル関数を () を使用して公開できます。
C# Dll には、すべての型を検索し、Dll のオブジェクト モデル全体を使用するために使用できるマニフェストが含まれています。
Rubyを使用して後者(つまり、すべてのタイプとクラス階層)を試したことはありませんが、可能であれば、エクスポートされた関数のみを呼び出すことができる好ましいアプローチです。IronRuby では、.NET タイプのインポートに問題がないようです。
C++ ライブラリを作成するには、Visual C++ Win32 プロジェクトを選択し、続いて表示されるダイアログで [次へ] をクリックして DLL チェックボックスをオンにします。それ以外の場合は、Visual C# クラス ライブラリ プロジェクトを選択します。
2 つの方法があります。
Win32API
Ruby などの言語拡張機能を使用して呼び出すことができます。