2017-04-24 29 views
-2

これは複雑なので、すぐに失われることがあります。 Visual C++ 6.0で開発された社内プログラムでは、以前からベンダーから32ビットのActiveXコントロールを購入しています。今、Visual Studio 2013を使用して32ビットと64ビットの両方のプラットフォームを持つプログラムを更新します。ベンダーはもはやC++をサポートしていないし、このActiveXファイルの64ビット版を持っていない。私はVisual Studio 2013 32ビットを使用してソフトウェアを構築することができ、ActiveXコントロールは完全に機能します。しかし、プラットフォームの違いにより、64ビットを使用してソフトウェアを構築すると、ソフトウェアはすべて、ActiveXコントロールを必要とする部分を除いて機能します。 これでOLE/COMオブジェクトビューア(OleView.exe)を実行し、activex ocxファイルからIDLファイルを作成しました。次に、* _h.hと* _i.cファイルを作成するためにIDLファイルをコンパイルして(デバッグ後に)コンパイルすることができました。 質問:これらのファイルを取得し、64ビットプラットフォームでactivexを再構築するシンプルでエレガントな方法はありますか?32ビット* IDLファイルの* _h.hファイルと* _i.cファイルの64ビット* .ocxファイルへの変換

+0

あなたはそれらがインターフェイスに関するファイルであることを認識していますか? ActiveXコントロールを再構築するには、残りのすべてのソースファイルを使用します。 64ビット版が本当に必要な理由を聞かなければなりません。あなたは、リソースとメモリを増やす必要がありますか、それとも単なるマーケティングですか、いくつかの上司のお尻のバグですか?これらのファイルを64ビットに簡単に再コンパイルすることはできません。あなたがVS 2013を使っているなら(なぜ2017ではないのか?)、OCXからタイプライブラリを抽出し、それを.TLBファイルとして保存し、プロジェクトに#インポートします。 Google for DllSurrogate 32ビットプロセスで32ビットOCXを実行する必要はありません。 –

+0

@JoeWillcoxson、コメントありがとうございます。プロジェクトは自宅でのみ使用されていますが、私たちは64ビットへの移行を要求した顧客からのDLLを必要とします。 VS 2013が選ばれた理由はわかりません。私が提供したパラメータではできないと答えた回答を作成すると、私はそれを受け入れます。 – jackson80

答えて

0

OCXのインターフェイスを構成するヘッダーファイルと.cファイルだけを再コンパイルして、64ビットOCXを作成することはできません。 OCXはインターフェイスファイルとコントロールの実装である他の多くのファイルで構成されています。あなたと同じようにしようとするとうまくいかないでしょう。