Отладка Visual Studio 2005 VB с помощью c ++ dll - отладка на смешанном языке

У меня есть проект vb, который вызывает функции в dll. DLL создается в отдельном проекте vs (portaudio), который написан на c.

Проект dll c компилируется чистым и создает необходимую dll, которую я сейчас помещаю в c: \ windows \ system, чтобы среда выполнения vb могла ее увидеть.

Проект VB находится в c: \ devprojects \ vbtest

C Project находится в c: \ devprojects \ portaudio с файлом проекта в c: \ devprojects \ portaudio \ build \ msvc. Dll, созданная в Win32 \ debug в этом каталоге msvc.

Когда я вызываю функцию dll, возможно ли, чтобы отладчик vs прошел через функцию c в dll - у меня есть весь код и т. Д., Но я не знаю, поддерживает ли VS2005 такую ​​отладку на смешанном языке.

Если это возможно, не могли бы вы посоветовать, как мне настроить Visual Studio для этого.

Большое спасибо Дэвид


person David Shields    schedule 26.01.2009    source источник


Ответы (3)


Необязательно иметь оба проекта в одном решении, но вы должны скомпилировать оба проекта с включенными отладочными символами.

Теперь в вашем сетевом решении VB Project / Properties на вкладке «Отладка» убедитесь, что установлен флажок «Включить отладку неуправляемого кода».

Также убедитесь, что загруженная dll находится в том же месте, где она была скомпилирована, иначе она может не найти pdb, где хранятся символы отладки.

person Ismael    schedule 26.01.2009
comment
Это сделает это. Удаление моего ответа. - person Binary Worrier; 26.01.2009
comment
Супер - работает шарм. Не совсем уверен, почему, но давайте сделаем это! - person David Shields; 27.01.2009

Создайте решение с обоими проектами, добавьте ссылку из проекта VB в проект C, используя диалоговое окно «Добавить ссылку ..» -> Проект и соберите их все в режиме отладки.

Как вы вызываете C dll из VB?

person abatishchev    schedule 26.01.2009
comment
в vb я объявляю функции dll следующим образом: Private Declare Function Pa_GetVersionText Lib portaudio_x86.dll () As String, например. Это проблема? - person David Shields; 26.01.2009
comment
Примечание. Когда я выбираю добавить ссылку - ›Проект, в списке нет ни одного объекта, и нет кнопок навигации или [...] кнопок для поиска их. - person David Shields; 26.01.2009
comment
Какой тип проекта C ++? Я только что создал VB.NET WinApp и C ++ Win32 Dll. WinApp - ›Добавить ссылку -› Проект - ›вот у меня проект C ++ Dll. - person abatishchev; 26.01.2009
comment
Свойства проекта - ›Свойства конфигурации -› Параметры проекта по умолчанию: Тип конфигурации: Динамическая библиотека (.dll) Использование MFC: Использовать стандартные библиотеки Windows Использование ATL: Не использовать ATL Помогает ли это? - person David Shields; 26.01.2009
comment
Прости! Я не прав! Ссылка была добавлена, но при сборке я получил сообщение «Невозможно ссылаться на проект« CppLibrary ». Это не сборка .NET. '. - person abatishchev; 26.01.2009
comment
Так я застрял? Невозможно отладить функцию c при вызове из приложения vb? Очень жаль, что MS не может предложить эту функциональность - это было бы очень полезно. - person David Shields; 26.01.2009

Если это VB.NET, то это очень просто, просто настройте решение с обоими проектами под ним, настройте их зависимости и убедитесь, что при сборке отладочная версия проекта VB ссылается на отладочную библиотеку / dll, созданную из вашего проекта C ++. . Все остальное сделает Visual Studio.

Я делал это раньше пару раз с приложениями C #, вызывающими dll C ++. Я не собирался это настраивать, но попытался выполнить пошаговое выполнение во время отладки, предполагая, что я получу список сборки и смогу хотя бы разобраться в том, что не так с моим кодом ... однако он загрузил правильный файл .cpp и позволил мне продолжить работу с этим кодом.

person jheriko    schedule 26.01.2009