Отладка c ++ dll в C # - PullRequest
32 голосов
/ 30 июня 2009

У меня есть .dll из c ++, и я хочу отладить его в C #, но я не знаю, как это сделать.

Когда я компилировал проект c ++, Visual Studio попросил меня выполнить «.exe».

Я предположил, что мне нужно было создать проект для выполнения DLL.

Но я заблудился, как я мог его отладить?

Ответы [ 5 ]

35 голосов
/ 30 июня 2009

Если я правильно вас понимаю, вы хотите отладить созданную вами C ++ DLL в проекте C #, который вызывает DLL, которую вы также создали?

Я делал это раньше, зайдя в свойства вашего проекта C # и в разделе «Отладка» установив флажок «Включить отладку неуправляемого кода». Это должно позволить вам войти в вашу C ++ DLL.

18 голосов
/ 30 июня 2009

Чтобы отладить C ++ из C #, нужно сделать пару вещей.

  1. Добавьте проект C # к вашему решению для приложения отладки.
  2. Измените свойства проекта C # на «Разрешить отладку неуправляемого кода» на вкладке «Отладка» свойств проекта.
  3. Установить проект C ++ как зависимость проекта C #.
  4. Напишите код в своем проекте C # для использования DLL либо с помощью P / Invoke, либо с помощью COM.
  5. Установите некоторые точки останова в вашем коде C ++ и запустите проект C #.
5 голосов
/ 30 июня 2009

Visual Studio не может выполнить dll самостоятельно.

Вам необходимо установить загрузочный .exe, который будет использовать вашу C ++ dll, в свойствах вашего dll-проекта. Это можно сделать из properties -> debugging -> command , указав путь к исполняемому файлу, который будет вызывать вашу dll, и любой необходимый аргумент командной строки.

1 голос
/ 07 июля 2018

Для VS 2017 Pro перейдите на страницу свойств основного проекта (ваш проект c # в решении), щелкнув его правой кнопкой мыши.В пункте меню «Отладка» найдите параметр в движках отладчика, выберите «Включить отладку собственного кода».

0 голосов
/ 07 февраля 2017

Расширение отладки SOS (Son of Strike) (SOS.dll) помогает отладить управляемый код в Visual Studio, предоставляя информацию о внутренняя среда CLR

см. Статью ниже: -

СТАТЬЯ MSDN

...