Как отлаживать приложение, когда сторонняя библиотека не обеспечивает отладочную сборку? - PullRequest
2 голосов
/ 15 февраля 2010

У меня есть приложение, над которым я работаю, которое использует две сторонние библиотеки, каждая с предварительно скомпилированными библиотеками libs и dll, одна из которых предоставляет необходимые .lib файлы для обеих сборок отладки и выпуска (A[d].lib) идругой, который предоставляет только .lib файлы для сборок выпуска (B.lib).

Компиляция в режиме выпуска (с использованием MSVC9) работает нормально, однако попытка компиляции в режиме отладки завершается неудачей, поскольку для сторонней организации A требуется LIBCMTD.lib (или MSVCRTD.lib), в то время как третье лицо B требует LIBCMT.lib (или MSVCRT.lib).

Могу ли я обойти это или я застрял в режиме отладки?

Ответы [ 3 ]

3 голосов
/ 16 февраля 2010

Вам нужен режим полной отладки, или вы просто хотите иметь возможность отладки? Если дело обстоит позже, просто перейдите к настройкам компоновщика и включите генерацию символической информации (.pdb). Таким образом, вы можете использовать отладчик в своем собственном коде, проходить по строкам и просматривать переменные. Если вас раздражают изменения в потоке управления, создаваемые оптимизаторами, вы можете перейти к параметрам компилятора и отключить оптимизацию. Таким образом, вы можете использовать отладчик и встроенный режим выпуска. Как только вы довольны своим кодом, вы просто возвращаете настройки для создания оптимизированного кода.

1 голос
/ 16 февраля 2010

Я не уверен, что это можно сделать напрямую со статическими библиотеками. Я предлагаю вам упаковать библиотеку B в динамическую библиотеку, а затем использовать эту новую библиотеку B '. Ваши проблемы исчезнут.

1 голос
/ 16 февраля 2010

Попробуйте передать /NODEFAULTLIB:LIBCMT компоновщику.

...