3

いくつかの DLL、OCX、および GUI で構成されるこの古い VB6 プロジェクトがあります。

VBP ファイルにこれを含む GUI コンポーネントがあります。

Type=Exe
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\SysWOW64\stdole2.tlb#OLE Automation
Object={EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}#1.1#0; ieframe.dll
Object={3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}#4.0#0; mshtml.tlb
Reference=*\G{64E54C86-D847-48F7-9AE5-D6C9B8E6A3A2}#3.0#0#..\..\bin\Crypt.dll#Crypt
Reference=*\G{B3E7F95C-B6D9-458E-B4D4-5272759B139A}#4.0#0#..\..\bin\SpeechMike.dll#SpeechMike_DLL
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; MSCOMCTL.OCX
Object={AB4F6C60-4898-11D2-9692-204C4F4F5020}#29.0#0; Ccrpsld.ocx
Object={48E59290-9880-11CF-9754-00AA00C00908}#1.0#0; msinet.ocx
Object={9C526969-AA6E-4D61-BAFA-117FD20C2B38}#3.0#0; SpeechMike.ocx

参照設定はマシンごとに常に変化するため、面倒です。つまり、例として最後の GUID '9C526969-AA6E-4D61-BAFA-117FD20C2B38' は、私のシステム上の何かになりますが、他の誰かのマシン上の何かになります。

とりあえず、機能させるために、Crypt.dll と SpeechMike.dll への参照を消去します。SpeechMike.ocx もオブジェクト化します。それ以外の場合、Visual Studio は存在しないものを探します。次に、「プロジェクト > 参照」で Crypt と SpeechMike の両方をチェックすると、参照は適切な GUID とバージョンで VBP に戻ります。最後に、'project > components' で OCX を追加して準備完了です。

私はそれについて間違っていますか?プロジェクトを開始するために面倒な作業をせずに、他のユーザーとプロジェクトを共有するにはどうすればよいですか?

MS Visual Basic 6 (VS 6 エ​​ンタープライズの一部) を使用しています。

4

1 に答える 1

9

これは「バイナリ互換性を維持できていない」ように聞こえます。通常、これは自分自身に対してのみ行いますが、複数の人がソース プロジェクト ファイルからライブラリをコンパイルしている場合は、もちろん、より大きな頭痛の種になる可能性があります。

ActiveX EXE、DLL、および OCX を作成する場合、型とクラス ID 値 (GUID) が割り当てられる「ベース」バージョンを作成する必要があります。ドキュメントでは、手順を空のままにしてこれを行うことも提案しています。IDE が空の宣言を削除しないように、コメント行または何かだけです。

「空の」基本参照ライブラリを使用する必要はありません。完全なコードが含まれているライブラリを使用できます。

このベースライン ライブラリをコンパイルしたら、プロジェクトを終了して保存します。次に、この「空の」ライブラリの名前を別の名前に変更し、そこからプロジェクト ソース ファイルと一緒に保存します。

この後、プロジェクトを再度開き、プロジェクトのプロパティに移動し、[コンポーネント] タブで [互換性] 設定を [バイナリ互換性] に変更し、ボックスにコンパイル済みベースライン ライブラリのフル パスと名前を入力します。プロジェクトを保存します。これで、コードを追加して「実際の」ライブラリをコンパイルし、他のプログラムで使用できるようになります。

これらのライブラリ (DLL、OCX) をソース コード形式で他の人に配布してコンパイルできるようにする場合は、ソース コード ファイル、VBP ファイル、リソース ファイルなどと共に、この名前を変更したコンパイル済みベースライン ライブラリを提供する必要があります。

そこから、バイナリ互換性を壊すような変更 (メソッドの引数リストの変更など) を行うまで、GUID は安定します。

詳細については、オンライン ヘルプ (MSDN ライブラリ) を参照してください。見る:

Visual Basic の使用|コンポーネント ツール ガイド|ActiveX コンポーネントの作成|コンポーネントのデバッグ、テスト、および展開|ActiveX コンポーネントのバージョン互換性

于 2013-04-11T23:27:09.533 に答える