6

Delphi で作成された OCX の 64 ビット バージョンを展開します。OCX では、stdvcl40.dllが使用可能であり、ターゲット システムに登録されている必要があります。私の知る限り、私の Delphi インストールには 32 ビット バージョンしかありませんが、ソースが利用可能であるため、自分で 64 ビット バージョンを作成できるはずです。

そうする必要性や利点はありますか?それとも、含まれているバージョンに固執し、そのバージョンのみを展開する必要がありますか?

編集 背景を少し説明します。StdVCL40.dll には主に、System.Win.StdVCL.pas で宣言された 3 つのインターフェイスを公開するタイプ ライブラリが含まれています。この dll の新しいバージョンでは、これらのインターフェイスを処理するいくつかのプロパティ ページも実装されています。

stdvcl40.dll への依存関係を削除した結果、これらのインターフェイス (私の場合は IString) がタイプ ライブラリで使用できなくなり、すべての参照が IDispatch に置き換えられます。

stdvcl40.dll は設計時パッケージではなく、以前の Delphi バージョンのほとんどの ActiveX ライブラリと一緒に配置する必要がありました。そうしないと、OCX がそもそも登録を拒否するため、デプロイする必要があります。

実際には私の OCX の 64 ビット バージョンでも動作するようです。おそらく、Windows COM は 64 ビット バージョンが存在しないことを認識し、32 ビット バージョンを使用するためです。これが進むべき道かどうかはわかりませんが。したがって、私の質問。

4

1 に答える 1

2

少なくともあなたの場合、このDLLはタイプライブラリのみ(IStringsの定義など)のストレージとして使用されていると思います。答えは「いいえ」です。x64 バージョンは必要ありません。この x32 DLL を登録すると、x32/x64 アプリの両方でタイプ ライブラリを使用できるようになります。申し訳ありませんが、今は確認できませんので、あくまでも推測です。

更新 stdvcl40.tlb を登録できます (サイズがわずか 3kb であるため、展開がはるかに簡単です)。OCX は、「stdvcl40.dll」ではなく「stdvcl40.tlb」に依存します (DLL のチェックを外す必要がある場合があります)。タイプライブラリエディタのタブ「用途」からTLBをチェックしますが、それが必要かどうかはわかりませんが、私のテストプロジェクトではDLLに依存していません)。

于 2014-06-25T18:11:06.567 に答える