я должен связать с Debug или Release dll с тем же именем? - PullRequest
0 голосов
/ 07 января 2019

Я работал над проектом MS Visual Studio и заметил, что сборка отладки была связана с библиотекой выпусков (DLL), когда также была доступна библиотека отладки с тем же именем. Я переключил путь к Link the Debug library, и он кажется все еще работает. Есть ли способ узнать, были ли мои изменения правильными?

Дополнительная информация:

Использование DLL отладки вызывает небольшую утечку памяти, которая не была вызвана релизной DLL. Или, возможно, это данные, связанные с отладкой кеша Эта утечка заставила меня усомниться в том, что она как-то включает заголовки lib без _DEBUG. Таким образом, этот вопрос.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Это предпочтительный способ связать отладочные сборки вашей программы с отладочной версией внешних динамических библиотек, поскольку она гарантирует, что будут использоваться унифицированные библиотеки времени выполнения Visual C ++. Микширование библиотек, созданных в режимах Debug и Release, приведет к тому, что среды выполнения Debug и Release VC ++ будут связаны и будут раздражать предупреждения компоновщика о множественных определениях символов в конфликтующих библиотеках Debug / Runtime.

Иногда это может быть неизбежно, т. Е. Доступна только версия выпуска некоторой внешней библиотеки. Следовательно, в VC ++ есть настройки компоновщика, позволяющие игнорировать некоторые специфические библиотеки. Таким образом, вы можете начать проверку в настройках Linker-Input сборки Debug, если такие игнорирования уже определены для существующих конфликтов. Если повезет, вы сможете удалить их сейчас.

Если использование отладочной версии какой-либо библиотеки нарушает всю программу, это может быть понимание того, как улучшить всю систему, это то, для чего в любом случае нужна сборка Debug.

0 голосов
/ 07 января 2019

Предполагая, что это правильная библиотека (как в том же коде, скомпилированном для другой конфигурации), вы имеете право ссылаться на dll отладки в вашей конфигурации отладки (и должны ссылаться на dll релиза в вашей конфигурации релиза).

Различия, как правило, связаны с уровнем оптимизации (Debug обычно компилируется вообще без какой-либо оптимизации) и любыми символами, которые могут быть включены, чтобы облегчить разработку и, возможно, вступить в нее.

...