Mam EXE EXE, który jest napisany w VC++. Mam implementację napisaną w języku C#. Mam plik EXE VC++ pobierający bibliotekę DLL języka C#, jak tutaj: http://support.microsoft.com/kb/828736. Działa świetnie, ale muszę mieć możliwość debugowania. Oba projekty są ładowane do tego samego .SLN, ale punkty przerwania w C# nigdy nie zostają trafione. Czy istnieje sposób debugowania tego w VS2012?Debugowanie zarządzanego komponentu z C++ Win32
Odpowiedz
Ah, okazuje się, że jest to łatwe, jeśli znasz prawy przycisk do popchnięcia. We właściwościach projektu C++, Właściwości konfiguracji -> Debugowanie -> Typ debuggera = "Mieszany".
Spróbuj dodać odniesienie do projektu do C# Dll z projektu C++. Jeśli już to zrobiłeś, proszę posprzątaj rozwiązanie i zbuduj. To powinno rozwiązać problem.
Ustawiam punkt przerwania zaraz po utworzeniu komponentu C#. Patrząc na okno Moduły, widzę, że biblioteka DLL jest oznaczona "Moduł nie załadował się przy domyślnym adresie ładowania" i "Pominięto symbole ładowania dla pliku binarnego NGen." Kliknięcie przycisku Ładowanie informacji daje: "Ten moduł jest wstępnie skompilowanym plikiem binarnym utworzonym przez narzędzie ngen.exe.Debugger nie próbuje załadować symboli dla tych plików binarnych, ale zamiast tego załaduje symbole dla oryginalnego dll/exe, gdy jest ładowane przez środowisko wykonawcze .NET. " Kliknięcie przycisku Wczytuj symbole pozwala mi przeglądać plik .PDB (o czym już wie), ale nie pomaga. –
Todd. Uratowałeś mi życie. – Sherlock