Почему библиотеки импорта Win32 все версии выпуска? Где находится отладочная версия? - PullRequest
0 голосов
/ 14 октября 2011

Когда мы хотим использовать Win32 API, мы указываем библиотеки импорта, которые имеют функции API, которые мы хотим использовать. Например, если я хочу использовать функцию HttpCreateServerSession для создания сеанса сервера, мне нужно указать httpapi.lib в настройке ввода компоновщика.

Почему нет httpapi_d.lib (отладочная версия)? Почему мы можем использовать библиотеки импорта версии Win32 в нашем проекте отладочной версии без каких-либо предупреждений / ошибок компиляции / ссылок?

Обычно, когда мы реализуем DLL, мы создадим отладочную и выпускную версии библиотеки импорта для людей, которые хотят использовать нашу DLL. Почему Microsoft может предоставить только версию выпуска? Спасибо.

1 Ответ

2 голосов
/ 14 октября 2011

Библиотеки импорта содержат только заглушки функций, и поэтому нет необходимости иметь какие-либо символы отладки (у вас была бы другая библиотека, если бы вы ссылались на другую, отладочную DLL-библиотеку - но обычно ее нет, даже хотя вы строите свою программу как вариант отладки). Если вам нужны символы отладки для системной DLL, используйте сервер символов MS (см., Например, документацию WinDbg о том, как это сделать).

Кроме того, связывание «отладочной DLL» с «программой выпуска» не является ошибкой компоновщика, поскольку на этом уровне концепций «отладка» и «выпуск» не существует (вы можете получить ошибки, связанные с другим ABI, но это не совсем то же самое).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...