1

顧客に配布する C++ ライブラリを構築する必要があります。ライブラリは、VB6、C++、VB.net、C# などの幅広い言語からアクセスできる必要があります。

今まで ActiveX コントロール (ocx ファイル) を使用してきました。しかし、私が構築できるより良い種類のライブラリ (dll など) があるのではないかと思います。おすすめは何ですか?

私はライブラリ言語として C++ に限定していますが、他の開発者への参照用に他の言語について言及することができます。

PS 質問が既に出されている場合は申し訳ありません。適切なタイトルを見つけるのに苦労しました。私の英語を自由に修正してください。

編集:最適な選択は DLL または OCX (つまり、COM) のようですが、どちらを選択するかについてはまだ疑問があります。現代の言語 (たとえば .NET) に適しているのはどれですか? 最終開発者の観点から、どちらが使いやすいでしょうか?

4

4 に答える 4

3

ほとんどすべての言語には、動的ライブラリをロードし、そこからエクスポートされた C 関数にアクセスする方法があります。

dll 内で C++ を使用することを妨げるものは何もありませんが、移植性を最大限に高めるために、C 関数のみをエクスポートしてください。これについては、この投稿で詳しく説明します。

于 2009-01-08T12:58:27.560 に答える
3

VB6 と .NET の両方のサポートを検討している場合、COM を介してインターフェイスを公開することにほとんど行き詰まっていますが、少なくとも、言語/ランタイム システムに基づいて複数のラッパーを作成する必要がなくなります。と対話しようとしています。

于 2009-01-08T14:06:38.450 に答える
1

これを Windows 以外のプラットフォームに移植する必要がある場合は、COM オブジェクトは実際にはまったく移植できないため、DLL / 共有ライブラリが最適な選択です。

さらに、何らかのラッパーを作成する必要がある場合でも、ほぼすべてのプラットフォームから DLL を呼び出すことができます。dll を com オブジェクトにラップするのは非常に簡単ですが、ネイティブの com オブジェクトを作成すると、C スタイルの DLL API を追加するのは非常に難しくなります。さらに、たとえば Java から呼び出したい場合があります。DLL を呼び出す JNI ラッパーを作成する方が、あらゆる種類のクロス プラットフォームの方法で COM と連携させるよりもはるかに簡単です。

実際には、それを実際に呼び出す必要があるプラットフォームと、将来的に何か異常なことを起こさないという確信が持てるかどうかによって異なります。

于 2009-01-16T11:19:35.017 に答える
0

これらすべての言語から呼び出すことができるようにするには、必要な場所にラッパーを記述する必要がなく、唯一の実際のオプションは COM になります (これはポイントを無効にします)。

于 2009-01-08T12:50:11.977 に答える