このチュートリアルの第 2 部の最後で小さな問題に遭遇しますが、正直に言うと、これは実際には大きな問題です。時間があれば、この問題は努力して研究する価値があるはずです。
私たちがその問題にどのように遭遇したか覚えていますか?このときは、まず ActiveXDLL をコンパイルし、次にその DLL を使用したテストプログラムをコンパイルしました。次に、DLL の内容を変更する必要があると想定して、DLL を再コンパイルします。しかし、再度テストプログラムを実行すると、エラーが発生します。
はい、確かにそんなことはあり得ません。
経験上、これは互換性の問題であることがわかっているからです。したがって、次のように処理できます。
Visual Basic を起動し、Northwind プロジェクトを開きます。
「プロジェクト」->「NorthwindProperties」メニューを選択します。
「コンポーネント」タブをクリックします。
「VersionCompatibility」ページのコンテンツを参照すると、3 つのオプションが見つかります。今から説明しましょう:
NoCompatibility - コンパイルするたびに、ユーザー COM コンポーネントは新しいタグでマークされます。これは、プログラムが DLL の古いタグ (以前のバージョン) のみを使用できることを意味します。
ProjectCompatibility - ユーザー COM コンポーネントは、コンパイルされるたびに常に新しいタグでマークされるわけではありません。そうである場合、現在使用されているアプリケーションはすべて失敗します。実際、これは現在のプロジェクトがコンパイルされた DLL プロジェクトと大きく異なる場合にのみ発生します。
BinaryCompatibility - コンパイルされるたびに、アプリケーションは常に以前にコンパイルされた DLL タグを保存しようとするため、使用されるアプリケーションでブルー スクリーンが発生しないことが保証されます。ただし、現在コンパイルされる DLL が以前にコンパイルされた DLL とあまりにも異なる場合、新しいタグがマークされます。
上記の引数をテストしてみましょう。
このチュートリアルの前の部分のテスト プログラムを開きます。
再コンパイルします。
テスト実行してみると、正常に動作するはずです。
ActiveXDLL プロジェクトを開きます。
そのプロパティを BinaryCompatibility に設定します。
DLL を再コンパイルします。
テスト プログラムを試してみると、問題なく動作するはずです。
OK、問題は解決したようです。しかし、DLL が再コンパイルされると、ほとんどの開発者は別の非互換性状況に陥ることになります。
もっと良い解決策はないでしょうか?この問題はひとまず脇に置いておきましょう!
さらに多くのコンテンツについては、次のサイトにアクセスしてください。
www.PylonOfTheMonth.co.uk.->