0

VS 6 で開発された 2 つの異なる C++/MFC アプリケーションからアクセスできるように、Com Interop を使用してビルドした .NET 2.0 DLL があります。

現在、1 つの C++ アプリケーション (App1) は .NET DLL の 1 つのフォーム (Lib1) を使用し、もう 1 つのアプリケーション (App2) は別のフォーム (Lib2) を使用しています。これらの個別のライブラリを 1 つのコード ベースに結合したいと考えていますが (そうあるべきです)、それでも 2 つの個別のライブラリにする必要があります。ただし、これら2つの別々のライブラリが同じ名前の場合、登録する方法がわかりません。これはできますか?私が現在行っていることに代わるものはありますか?


hr = ::CLSIDFromProgID(L"Lib1.Devices", &clsid);を呼び出して、App1 はそのバージョンのライブラリにアクセスします。
hr = ::CLSIDFromProgID(L"Lib2.Devices", &clsid);を呼び出して、App2 はそのバージョンのライブラリにアクセスします。

4

1 に答える 1

0

ここでできる2つのこと

  • 2 つの異なるフォームに 2 つの異なるメソッドを配置できるため、2 つの異なるアプリケーションで使用できる 2 つのメソッドを公開する単一の COM オブジェクトを持つことができます。

  • 2 番目にできることは、com dll に 2 つの異なる GUID を設定することです。この方法では、同じ名前の dll を 2 つの異なるコードにすることができます。ただし、これはお勧めできませんが、dll 地獄の根本的な原因です。

このソリューションについては、こちらを参照してください DLL 内の GUID (.Net)

于 2013-01-10T13:50:59.977 に答える