Witam,
Dziś zmagam się z małym, ale pewnym wnerwiającym problemem.
Do działania tego programu nie jest to niezbędnego, ale wprowadza pewien 'ficzer', dzięki czemu wszystko działa lepiej i przyjemniej się używa, co do końcowych użytkowników jest ważne.
A więc, do sedna.
Pewna funkcja wymaga użycie biblioteki, niestandardowej firmy zewnętrznej (mam zgodę i ich pomoc, lecz nie wiedzą co może być nie tak). Wszystko się dzieje pod VS2010 Express C#. Podłączam się do tej biblitoteki DLL poprzez wybranie Referencji -> COM -> XXX.
Wszystko fajnie ładnie, mam funkcje które chce, ładuje ją sobie, ok. W kodzie wszystko gra.
W momencie uruchamiania wywala błąd:
Pobranie fabryki klasy COM dla składnika o identyfikatorze CLSID {2CE8566C-1152-485F-AA56-E29047238B09} nie powiodło się z powodu następującego błędu: 80040154 Klasa niezarejestrowana. (Wyjątek od HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Sprawdzam sobie ten CLSID w rejestrze. Jest, pod prawidłową nazwą, wszystko 'cacy'. Ale nie działa. Bibliotekę podłączam ustawiając ją tak, by się skopiowała z jakiegoś tam miejsca, do katalogu z programem i zamiast dostać plik 1,3 MB, tworzy DLL o rozmiarze 8 kB. Patrzę sobie tam, gdzie docelowo znajduje się XXX i jest tam taki plik, ale "TLB". (jest XXX.DLL i XXX.TLB)
Gdy ręcznie podpinam DLL (poprzez Browse) nie ma tam funkcji. Gdy podepnę TLB, wszystko jest. Wygląda więc na to, że do COM trafia TLB, zamiast DLL, chociaż pisze tam wyraźnie DLL.
Ponowna rejestracja DLL przez REGSVR32 nie daje rezultatu. Próbuję więc zarejestrować TLB poprzez REGASM i też nic, bo pisze, że to nieprawidłowa biblitoeka .NET. No tak, bo to biblioteka najprawdopodobniej C++.
Jak próbuję na siłę skopiować DLL do folderu z programem, to wyskakuje komunikat, że to niepoprawna biblioteka, wersja, format.
Spotkał się ktoś z czymś takim?
Jak to zarejestrować?
Dodam, że: system Windows 8.
Wcześniej, na XP i Win7 wszystko działało i ze sobą współgrało.
Pozdrawiam
AW