現在、プログラミングサイト(プログラムに含める必要があります)などの認証ライブラリを構築しています。
問題は、いくつかの言語が使用されており、c#、Java、python(すべて1つのdllに含まれる)などの一部の大きな言語で参照できる認証ライブラリを作成したいことです。
このようなことはc ++でもできると聞いたので、c ++でライブラリを作成しましたが、他の言語でそれを参照する方法がわかりません。
C++を使用するときに直面する問題は、DLLです。
ただし、_extern "C"
_関数を介してDLLインターフェイスを定義し、C互換データ型への交換を制限することで、この制限の多くを克服できます。
DLL(たとえば、共有オブジェクトライブラリではなく)と指定した場合)、Windowsのみに関心があるようです。
この場合、基本的にいくつかの選択肢があります。最初の(そして通常は最も単純な)は、最も一般的な分母アプローチです。Windows自体とほぼ同じインターフェイスを使用します。名前の最小限のマングルと、Microsoftのstdcall
呼び出し規約です。
他の明らかな選択は、COMオブジェクトを作成することです。かなりの数の言語の場合、COMオブジェクトは(とりわけ)COMオブジェクトがほぼ完全に自己記述的であるため、再利用がかなり簡単になります。つまり、他の言語がCOMオブジェクトを使用するために必要な情報を含めることができます。
オブジェクト指向言語からの使用をサポートする場合、COMには別の利点があります。COMを使用すると、個々の関数だけでなく、オブジェクトをエクスポートできます。
ただし、COMは両刃の剣のようなものです。一方、COMオブジェクトをエクスポートすると、COMを非常によくサポートする一部の言語での作業がはるかに簡単になります。一方、そうでない言語では、生活がはるかに困難になる可能性があります。