2012-11-01 74 views
11

我們在程序中使用了舊msado15.dll。我們用它導入#import「msado15.dll」。現在就在幾天前我們升級到了Windows 8.而且,唉,我們的軟件停止了在沒有安裝Service Pack 1的Windows 7上工作。 早些時候,當我們使用Windows 7時,我們升級到了Service Pack 1,並且發生了同樣的問題,所以我們從所有機器上卸載了Windows 7的Service Pack 1,並且一切正常。COM msado15.dll程序已停止運行

但與Windows 8我想他們已經改變了msado15.dll。 我在網上做了一些研究,他們說我們應該用msado60.tlb替換進口,但這也沒有用我們的編譯中斷。

這是我們如何使用我們的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\msado28.tlb" rename_namespace("ADOCG") rename("EOF","EndofFile") 

&也試過

import "c:\program Files\Common Files\system\ado\msado60.tlb" rename_namespace("ADOCG") rename("EOF","EndofFile") 

正如微軟Link建議。但它仍然可以在XP機器上工作& Windows 7沒有安裝Service Pack 1的機器。

任何一個可以表明,我們可以按照這樣才能得到我們的節目不帶Service Pack 1在Windows 7上運行適當的措施,以及在Windows 8

已經堅持了這個問題了幾天現在。幫助將不勝感激。

與問候, SAURABH

+0

我如何處理這個@工作有點奇怪,但它工作。我從舊VS2008/Win7機器上的廢料項目中生成了msado15.dll生成的tli和tlh文件,然後完全拋出導入語句。 stdafx.h頭文件包含tlh,tli中的stdafx.cpp。每次完整的構建都會導入相同的.dll文件,這對我來說是毫無意義的。事實證明,它也解決了許多其他問題。不知道它是否會爲你工作,但地獄,你可能嘗試了這一點奇怪的事情。 – WhozCraig

+0

雅非常感謝,這真的很有幫助。我們所做的與您提出的解決方案類似。我們採用了先前的msaso15.dll,即沒有SP1版本的Windows 7並導入了它。問題消失了。我認爲這意味着我們仍在使用舊的msado15.dll。但只要它有效,我們就很高興。再次感謝。 – Saurabh

+0

你很可能不使用DLL(per'se)。您正在使用在DLL的類型庫中定義的接口和CLSID。在CoCreateInstance()時間使用的實際運行時由您通過可重新分配的MSI安裝,或者已經存在於系統中。我剛接觸中間人並生成一次TLH/TLI文件,然後完全刪除整個導入機制,並將TLH/TLI文件直接檢入到項目的源代碼中。 – WhozCraig

回答

0

這被解析爲每SAURABH的評論:

我們所做的就是類似於你建議的解決方案。我們採用了以前的 msaso15.dll,即沒有sp1版本的Windows 7和導入的 。問題消失了。我認爲這意味着我們仍然在使用舊的msado15.dll 。但只要它有效,我們就很高興。