2011-08-16 9 views
34

Buduję projekt z OpenCV w języku C#. Wymaga pliku dll o nazwie cvextern.dll. ale, dodając ten plik jako odniesienie, pojawia się następujący komunikat: -Chcę rozwiązania tego problemu: Proszę upewnić się, że plik jest dostępny i że jest to poprawny zespół lub komponent COM

nie można dodać odwołania "cvextern.dll", upewnij się, że plik jest dostępny i że jest to poprawny zespół lub COM składnik.

męczę z poszukiwania, spędziłem ostatnie 2 dni w poszukiwaniu rozwiązania dla tego problemu

+1

Czy sprawdzono poprawność, czy plik jest "dostępny", jak i ma wszystkie uprawnienia (odczyt/wykonanie) dla określonego użytkownika. Również, jeśli pobrałeś z Internetu, może być konieczne "odblokowanie" go. – YetAnotherUser

+1

plik jest natywną biblioteką DLL, co oznacza, że ​​nie można go dodać do projektu .NET za pomocą polecenia Dodaj odwołanie ... można użyć programu DllImport (zobacz http://msdn.microsoft.com/en-us/library/system .runtime.interopservices.dllimportattribute.aspx) – Yahia

+0

Możliwy duplikat [Nie można dodać odwołania do biblioteki dll] (https://stackoverflow.com/questions/3456758/a-reference-to-the-dll-could-not -be-added) – STF

Odpowiedz

18

plik jest rodowitym DLL, który oznacza, że ​​nie można go dodać do projektu .NET poprzez Add Odwołanie ... można go używać poprzez DllImport (zobacz http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.aspx)

+0

tutorial nie wygląda na rzeczywistość .. Czy ma wpływ wersja visual studio? Używam programu Microsoft Visual Studio 2008 Express Edition .. :) –

+3

AFAIK tak naprawdę nie ma znaczenia ... chociaż biblioteka DLL musi znajdować się w katalogu projektu lub "globalnie dostępny" (jak system32 ...) – Yahia

+1

Ale w jaki sposób debugować wywołania do tej zewnętrznej biblioteki dll, jeśli nie można dodać odniesienia do niego w projekcie? –

3

Upewnij się, że wymagane biblioteki DLL są eksportowane (lub kopiowane ręcznie) do folderu bin podczas budowania aplikacji.

+2

Tak, ponieważ nie mogłem dodać go jako odniesienia, ale inna biblioteka DLL tego wymagała. Po prostu kopiowanie w czasie kompilacji. – Binarian

8

Następujące pracował dla mnie:

krótka odpowiedź

uruchom następujące poprzez linię poleceń (cmd):

TlbImp.exe cvextern.dll  //where cvextern.dll is your dll you want to fix. 

i ważny dll zostanie stworzony dla Ciebie.

Dłuższa odpowiedź

  • Otwarte cmd

  • Znajdź TLBIMP.exe. Prawdopodobnie znajduje się w C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin. Jeśli nie można znaleźć to przejdź do głównego folderu (C: \ lub D :) i uruchom:

    dir tlbimp.exe /s    //this will locate the file. 
    
  • Run TLBIMP.exe i umieścić dll za nim. Przykład: Jeśli dll jest cvextern.dll. Możesz uruchomić:

  • Nowa biblioteka dll została utworzona w folderze tlbimp.exe. Możesz użyć tego jako odniesienia w twoim projekcie.
+0

Pracował jak urok! Upewnij się, że używasz cmd z uprawnieniami administratora. – Christian

+0

brak takiej wygranej exe 8.1 64bit – MonsterMMORPG

+3

'typ wejścia nie jest poprawną biblioteką typów' ma ten błąd podczas uruchamiania z wiersza poleceń programu Visual Studio –

16

W moim przypadku musiałem zarejestrować dll -> open cmd (konsoli) z uprawnieniami administratora i wpisz: regsvr32 "foo.dll"

+0

To jest odpowiedź prawdopodobnie 95% puszka tego błędu można rozwiązać, wykonując ten cmd -> 'regsvr32" C: \ blah \ foo.dll "' – SSpoke

1

miałem ten sam program, mam nadzieję, że to może pomóc.

Używam Windows 7, otwórz Command Prompt-> uruchom jako administrator. zarejestruj swój plik < ...>. dll.

Po co uruchamiać się jako administrator, możesz zarejestrować swój plik < ...>. Dll, używając uruchamiania w Windows Start, ale nadal twoja biblioteka dll działa tylko jako użytkownik, nawet jeśli twoje konto jest administratorem.

Teraz możesz dodać swoją < ...>.dll na projektu-> Dodaj Reference-> Przeglądaj

Dzięki

1

Look here na odpowiedź przez TheMattster. Zaimplementowałem to i zadziałało jak urok. W skrócie, jego rozwiązanie sugeruje dodanie dll COM jako zasobu do projektu (tak więc teraz kompiluje się do biblioteki dll projektu), a po pierwszym uruchomieniu zapisz go do pliku (tj. Plik dll, który chciałem tam w pierwszym miejsce).

Mój problem polegał na tym, że nie tylko musiałem używać biblioteki COM w moim projekcie, musiałem też wdrożyć ją z moją aplikacją za pomocą ClickOnce, i bez możliwości dodania odniesienia do niej w moim projekcie powyższe rozwiązanie jest praktycznie jedyny, który działał.

0

"To" wymaga pliku dll o nazwie cvextern.dll. "To" może być albo własnym plikiem cs, albo inną biblioteką stron trzecich, której używasz w swoim projekcie.

Aby wywołać natywne biblioteki dll do własnego pliku cs, skopiuj bibliotekę dll do katalogu głównego katalogu \ lib projektu i dodaj go jako istniejący element. (Dodaj pozycję -Wyjście) i użyj Dllimport z poprawną lokalizacją.

Dla stron trzecich skopiuj bibliotekę macierzystą do folderu, w którym znajduje się biblioteka stron trzecich, i dodaj ją jako istniejący element.

Po zakończeniu budowy upewnij się, że wymagane biblioteki DLL pojawiają się w folderze Build. W niektórych przypadkach może nie pojawić się lub zostać zastąpiony w folderze Build. Usuń ręcznie folder Build i utwórz go ponownie.

Powiązane problemy