2012-11-01 11 views
11

Użyliśmy starego msado15.dll w naszym programie. I użyliśmy do zaimportowania go #import "msado15.dll". Teraz zaledwie kilka dni temu przeszliśmy na system Windows 8. Niestety, nasze oprogramowanie przestało działać w systemie Windows 7, w którym nie zainstalowano dodatku Service Pack 1. Wcześniej, gdy używaliśmy systemu Windows 7, uaktualniliśmy do Service Pack 1 i ten sam problem miał miejsce, więc odinstalowaliśmy Service Pack 1 dla Windows 7 ze wszystkich maszyn i wszystko działało dobrze.COM msado15.dll Program przestał działać

Ale z Windows 8 przypuszczam, że już zmienili plik msado15.dll. Zrobiłem kilka badań w Internecie i powiedzieli, że powinniśmy zastąpić import z msado60.tlb, ale to też nie działało z naszym łamaniem kompilacji.

W ten sposób odnosi się w naszym C++ Środowisko

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

Zmieniłem go

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

& również próbował

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

Jak sugeruje Microsoft Link. Ale nadal działa on na maszynach XP & Windows 7 Maszyny, które nie mają zainstalowanego Service Pack 1.

Może ktoś zasugerować odpowiednie kroki, które możemy wykonać w taki sposób, aby dostać się do naszego programu w systemie Windows 7 bez dodatku Service Pack 1, a także na Windows 8.

Zostały zatrzymany z tym problemem przez kilka dni teraz . pomoc będzie bardzo ceniona.

Z poważaniem, Saurabh

+0

To, jak sobie z tym poradziłem, było trochę dziwne, ale zadziałało. Wziąłem wygenerowane przez msado15.dll pliki tli i tlh wygenerowane z projektu złomu na starej maszynie VS2008/Win7, a następnie całkowicie wyrzucono instrukcje importu. Nagłówek stdafx.h zawierał tlh, stdafx.cpp wciągnięty w tli. Nie ma sensu importować tego samego pliku .dll z każdą pełną kompilacją. Jak się okazało, rozwiązało to również wiele innych problemów. Dunno, jeśli to zadziała, ale do diabła, najprawdopodobniej wypróbowałeś teraz obce rzeczy. – WhozCraig

+0

Bardzo dziękuję, to było naprawdę pomocne. To, co zrobiliśmy, było podobne do rozwiązania zaproponowanego przez ciebie. Pobraliśmy plik msaso15.dll z poprzedniego systemu Windows 7 bez wersji sp1 i zaimportowaliśmy go. A problem zniknął. Myślę, że oznacza to, że nadal używamy starego msado15.dll. Ale dopóki to działa, jesteśmy szczęśliwi. Dzięki jeszcze raz. – Saurabh

+0

Prawdopodobnie nie korzystasz z biblioteki DLL (per'se). Używasz interfejsów i identyfikatorów CLSID zdefiniowanych w bibliotece typów biblioteki DLL. Rzeczywisty czas wykonywania używany w czasie CoCreateInstance() jest instalowany przez redystrybucyjny plik MSI lub już obecny w systemie. Właśnie zająłem środkowego mężczyznę i wygenerowałem raz pliki TLH/TLI, a następnie całkowicie usunąłem cały mechanizm importu i sprawdziłem pliki TLH/TLI bezpośrednio w źródłowej bazie projektu. – WhozCraig

Odpowiedz

0

ten został rozwiązany zgodnie z komentarzem Saurabh za:

Co zrobiliśmy był podobny do rozwiązania zaproponowanego przez ciebie. Zrobiliśmymsaso15.dll z poprzedniej wersji, tj. Windows 7 bez wersji sp1 i zaimportowaliśmy . A problem zniknął. Myślę, że oznacza to, że nadal używamy starego msado15.dll. Ale dopóki to działa, jesteśmy szczęśliwi.

Powiązane problemy