2017-01-11 3 views
0

Я создаю C++ DLL с Visual Studio 2015, и я хотел бы развернуть сборку отладки на другой (внутренней, а не на клиентской) машине без среды Visual Studio, что означает, что мне придется статически ссылаться на MSVCRT (опция компоновщика '/ MTd'). Мой проект зависит от статической библиотеки foo.lib (отладочной версии), которая, кажется, построена с помощью «/ MDd», и при связывании она, как ожидается, выбрасывает:Могу ли я переопределить 'MDd_DynamicDebug' в статическом lib, с которым я связываюсь в своем проекте DLL?

«foo.lib (bar.obj): ошибка LNK2038: обнаружено несоответствие для «RuntimeLibrary»: значение «MDd_DynamicDebug» не соответствует значению «MTd_StaticDebug» в dllmain.obj «

Можно ли каким-либо образом переопределить это и заставить«/MTd »?

+0

У вас есть источник для foo.lib? Если это так, просто создайте его с помощью/MTd. Если нет, я думаю, что ты хочешь. –

ответ

0

Если у вас есть внешние источники, то вы можете просто перестроить его, используя /MTd компилятор. Если источник не доступен, тогда нет возможности принудительно использовать другую модель использования времени исполнения. Если вы пытаетесь распространять нереляционную версию для необходимости удаленной отладки какой-либо проблемы на клиентской машине, вы можете развернуть версию Release, но с отключенной оптимизацией, включением проверок времени выполнения, отладочной информацией и т. Д. Пока вы не вступаете в стандартные элементы библиотеки, отладка должна работать нормально.