プログラムで古いmsado15.dllを使用していました。そして、それをインポートするために#import "msado15.dll"を使用しました。数日後、Windows 8にアップグレードしました。そして、うわー、私たちのソフトウェアは、Windows 7で動作しなくなりました。これは、サービスパック1がインストールされていませんでした。 以前はWindows 7を使用していたときにService Pack 1にアップグレードしましたが、同じ問題が発生していましたので、Windows 7のService Pack 1をすべてのマシンからアンインストールしても問題ありませんでした。COM msado15.dllプログラムの実行が停止しました
しかし、Windows 8では、すでにmsado15.dllが変更されていると思われます。 私はオンラインでいくつかのリサーチを行いました。彼らはmsado60.tlbでインポートを置き換えるべきだと言っていましたが、これも私たちのコンパイルの中断を伴うものでした。マイクロソフトLinkによって示唆されるように、私は
import "c:\program Files\Common Files\system\ado\msado28.tlb" rename_namespace("ADOCG") rename("EOF","EndofFile")
&にそれを変更した
これは我々がCで参照するために使用される方法です++環境
import "c:\program Files\Common Files\system\ado\msado15.dll" rename_namespace("ADOCG") rename("EOF","EndofFile")
も
import "c:\program Files\Common Files\system\ado\msado60.tlb" rename_namespace("ADOCG") rename("EOF","EndofFile")
を試してみました。しかし、まだそれはXPマシンで動作します& Windows 7マシンにはService Pack 1がインストールされていません。
いずれかがここ数日間、この問題で立ち往生したことがあり、私たちのプログラムは、サービスパック1なしのWindows 7上で動作して取得することとしてだけでなく、窓8
に私たちが従うことができ、適切な手順を提案することができます。助けが大いに評価されるでしょう。
、 SaurabhこれはSaurabhさんのコメントどおりに解決された
この@仕事をどのように扱いましたかはちょっと変わっていましたが、うまくいきました。私は古いVS2008/Win7マシンのスクラッププロジェクトから生成されたmsado15.dllで生成されたtliとtlhファイルを取得して、インポートステートメントを完全に破棄しました。 stdafx.hヘッダーには、tlhが含まれ、stdafx.cppはtliに含まれています。それは私には、各。ビルドごとに同じ.dllを何度も何度もインポートすることに意味がありませんでした。それが判明したとき、それはまた、他の多くの問題を解決しました。それがあなたのために働くならばDunnoだが、地獄、あなたはおそらくこの点では見知らぬものを試しただろう。 – WhozCraig
本当にありがとう、本当に助かりました。私たちがしたことは、あなたが提案した解決策に似ていました。以前のmsaso15.dll(sp1バージョンのないWindows 7)を使用してインポートしました。そして問題は消えた。私はこれはまだ古いmsado15.dllを使用していることを意味します。しかし、それが機能する限り、私たちは幸せです。再度、感謝します。 – Saurabh
DLL(perse)を使用していない可能性があります。 DLLのタイプライブラリで定義されているインタフェースとCLSIDを使用しています。 CoCreateInstance()の時刻に使用された実際のランタイムは、再配布可能なMSIを介してインストールされているか、既にシステム上に存在しています。私はちょうど真ん中に乗って、TLH/TLIファイルを一度生成した後、インポートメカニズム全体を完全に落とし、TLH/TLIファイルをプロジェクトのソースベースに直接チェックしました。 – WhozCraig