Как перейти в неуправляемую библиотеку С++ из моего кода С++/CLI
У меня есть следующие три проекта в моем решении:
1. Библиотека С#
2. Управляемый код С++/CLI
3. Неуправляемый код С++
Я проверил "Включить неуправляемую отладку кода" в моем проекте С# и построил оба проекта на С++ в Debug/Win32. Однако я не могу войти в неуправляемый код - когда я F11 при вызове любого неуправляемого метода, он показывает мне, что какой-то случайный/неправильный код завершается.
Поскольку мои модульные тесты проходят, я знаю, что мой неуправляемый код выполняет.
Что мне не хватает?
Ответы
Ответ 1
Когда у меня возникла эта проблема, это произошло из одной из следующих вещей:
1) Включить неуправляемую отладку кода, не отмеченную. Вы уже исправили это.
2) Построил EXE как x64 или любой CPU (говорят, что x64 работает, но это не так). Я думаю, вы уже исправили это.
3) Включенный "только мой код" иногда вызывает проблемы с неуправляемой отладкой кода ( "Инструменты", "Параметры", "Отладчик", "Только мой код" )
4) Неправильные параметры отладки в настройках проекта С++
5) Отсутствующие, поврежденные или несогласованные файлы PDB. Вы можете проверить это, пытаясь установить контрольную точку в коде С++ во время работы в отладчике. Если точка останова превращается в полый круг, что-то не так с вашей информацией об отладке. Также проверяйте окно вывода при запуске в режиме отладки - он должен сказать вам, чьи символы загружены.
Ответ 2
Я видел, как этот вопрос периодически "другой" путь (т.е. от родного С++ до С++/CLI), и обычно это вызвано отладчиком, который действительно не собирает, что он должен отлаживать как собственные, так и управляемые код.
Обычно для меня настройка типа отладчика в свойствах конфигурации → Отладка в вашем проекте запуска от "Авто" до "Смешанная" решает проблему.