2012-11-01 13 views
11

プログラムで古い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さんのコメントどおりに解決された

+0

この@仕事をどのように扱いましたかはちょっと変わっていましたが、うまくいきました。私は古いVS2008/Win7マシンのスクラッププロジェクトから生成されたmsado15.dllで生成されたtliとtlhファイルを取得して、インポートステートメントを完全に破棄しました。 stdafx.hヘッダーには、tlhが含まれ、stdafx.cppはtliに含まれています。それは私には、各。ビルドごとに同じ.dllを何度も何度もインポートすることに意味がありませんでした。それが判明したとき、それはまた、他の多くの問題を解決しました。それがあなたのために働くならばDunnoだが、地獄、あなたはおそらくこの点では見知らぬものを試しただろう。 – WhozCraig

+0

本当にありがとう、本当に助かりました。私たちがしたことは、あなたが提案した解決策に似ていました。以前のmsaso15.dll(sp1バージョンのないWindows 7)を使用してインポートしました。そして問題は消えた。私はこれはまだ古いmsado15.dllを使用していることを意味します。しかし、それが機能する限り、私たちは幸せです。再度、感謝します。 – Saurabh

+0

DLL(perse)を使用していない可能性があります。 DLLのタイプライブラリで定義されているインタフェースとCLSIDを使用しています。 CoCreateInstance()の時刻に使用された実際のランタイムは、再配布可能なMSIを介してインストールされているか、既にシステム上に存在しています。私はちょうど真ん中に乗って、TLH/TLIファイルを一度生成した後、インポートメカニズム全体を完全に落とし、TLH/TLIファイルをプロジェクトのソースベースに直接チェックしました。 – WhozCraig

答えて

0

:私たちが何をしたか

はあなたが提案するソリューションと同様でした。私たちはsp1バージョンのないWindows7の msaso15.dllをとり、 をインポートしました。そして問題は消えた。これは、私たちがまだ古いmsado15.dllを で使用していることを意味します。しかし、それが機能する限り、私たちは幸せです。

関連する問題