-1

別の言語で呼び出し可能な win32api(dll) を作成するにはどうすればよいですか? 例:

Ruby を使用している場合は、C# または C++ で記述された dll を使用する必要があります。では、そのような動的ライブラリを作成するにはどうすればよいでしょうか?

4

2 に答える 2

0

C++ DLL と C# DLL には重要な違いがあります。

__declspec(dllexportC++ では、Ruby から呼び出すことができるグローバル関数を () を使用して公開できます。

C# Dll には、すべての型を検索し、Dll のオブジェクト モデル全体を使用するために使用できるマニフェストが含まれています。

Rubyを使用して後者(つまり、すべてのタイプとクラス階層)を試したことはありませんが、可能であれば、エクスポートされた関数のみを呼び出すことができる好ましいアプローチです。IronRuby では、.NET タイプのインポートに問題がないようです。

C++ ライブラリを作成するには、Visual C++ Win32 プロジェクトを選択し、続いて表示されるダイアログで [次へ] をクリックして DLL チェックボックスをオンにします。それ以外の場合は、Visual C# クラス ライブラリ プロジェクトを選択します。

于 2013-07-06T23:06:51.787 に答える
0

2 つの方法があります。

  1. DLL が C/C++ などのネイティブ言語を使用して実装されている場合。DLL から C 関数をエクスポートして、他の言語で呼び出すことができます。ほとんどの言語は、C 関数を直接、またはWin32APIRuby などの言語拡張機能を使用して呼び出すことができます。
  2. COM (コンポーネント オブジェクト モデル) を使用します。COM は、複数の言語で動作するように設計されています。これは多くの利点があるため、推奨される方法です。C#、C++、Delphi などの言語を使用して COM クラスを実装し、その言語の通常のオブジェクトのように他の言語で使用できます。
于 2013-07-08T05:02:08.207 に答える