2009-02-02 12 views
5

Utworzono bibliotekę dll przy użyciu zarządzanego C++. Teraz próbuję użyć go z C#. Dodałem obiekt do odniesień do projektu. Przeglądarka obiektów pokazuje obiekt w bibliotece DLL, ścieżka do biblioteki dll w przeglądarce obiektów odpowiada faktycznej ścieżce.Używanie zarządzanego dll C++ z C#

Jednak kiedy uruchomić program w C# narzeka:

Unhandled Wyjątek: System.IO.FileNotFoundException: Określony moduł nie mógł znaleźć. (Wyjątek od HRESULT: 0x8007007E)

Każdy pomysł, co jeszcze trzeba zrobić?

Dzięki.

+0

Czy możemy zobaczyć tutaj jakiś kod? –

Odpowiedz

6

Myślę, że brakuje ci innych złożeń lub referencji biblioteki DLL przez zarządzany zestaw C++.

+0

To prawda, że ​​jeden z używanych dll nie był na ścieżce. Dzięki. –

0

Czy Twój zarządzany zestaw C++ ma inne zależności, w tym niezarządzane biblioteki dll? Ten błąd pojawi się w środowisku wykonawczym, jeśli zestaw referencyjny nie może załadować zależności.

0

Czy uruchamiasz aplikację w wersji na komputerze bez zainstalowanej usługi VS?

Pytam bo wpadłem na podobny problem tutaj: Mixed Mode Library and CRT Dependencies - HELP

jeśli przewinąć w dół do mojej odpowiedzi można zobaczyć, co zrobiłem, że pomógł mi.

0

Sprawdź, czy zestaw C++ jest obecny w tym samym folderze co twój program C#. Powinien być skopiowany automatycznie, jeśli właściwość "Kopiuj lokalnie" jest ustawiona na wartość true (w odniesieniu do pliku dll C++ w aplikacji C#).

Jeśli istnieje dll C++, najbardziej prawdopodobnym problemem jest to, że dll C++ zależy od innej nie zarządzanej biblioteki dll, której nie można znaleźć (np. C# nie skopiuje ich do folderu aplikacji, ponieważ nie wie o niezarządzanych referencjach). Możesz użyć DependencyWalker na dll C++, aby sprawdzić brakujące zależności.

Innym prawdopodobnym powodem może być problem z bibliotekami uruchomieniowymi MSVC. Sprawdź, czy DependencyWalker nie narzeka na brakujące pliki MSVCR * .dll, MSVCP * .dll itp. ....

Powiązane problemy