При соединении моего dll в сборке конечных версий я добираюсь -
1> ССЫЛКА: предупреждение LNK4098: конфликты defaultlib 'mfc80d.lib' с использованием другого освобождают; используйте/NODEFAULTLIB:library
1> ССЫЛКА: предупреждение LNK4098: конфликты defaultlib 'mfcs80d.lib' с использованием другого освобождают; используйте/NODEFAULTLIB:library
1> ССЫЛКА: предупреждение LNK4098: defaultlib 'msvcrtd.lib' конфликты с использованием другого освобождает; используйте/NODEFAULTLIB:library
добавляя / ПОДРОБНЫЙ, я вижу следующий (отрывок):...
1> Поиск D:\Microsoft Visual Studio 8\VC\atlmfc\lib\mfc80d.lib:
1> Найденная "общественность: виртуальный __ thiscall AFX_MODULE_STATE:: ~AFX_MODULE_STATE (пусто)" (?? 1AFX_MODULE_STATE @@ UAE@XZ) 1>
Ссылаемый в mfcs80.lib (dllmodul.obj) 1> Загруженный mfc80d.lib (MFC80D.DLL)1> Найденный "длинный stdcall AfxWndProc (структура HWND __ *, неподписанный интервал, неподписанный интервал, долго)" (? AfxWndProc @@ YGJPAUHWND __ @@ IIJ@Z)
1> Ссылаемый в mfcs80.lib (dllmodul.obj) 1> Загруженный mfc80d.lib (MFC80D.DLL)
...
Если я интерпретирую это правильно, это означает, что компоновщик так или иначе разрешает вызовы из (оптимизированной) библиотеки mfcs80 как вызовы в (неоптимизированную) библиотеку mfc80D. Как это может быть??
Когда я добавляю/NODEFAULTLIB:mfc80d.lib, предупреждений не стало, но я еще не тих с ним. Как в стороне, модуль действительно страдает от спорадических необъяснимых катастрофических отказов на возрастающих ссылках, которые решены только восстанавливанием. Я использую VS2005.
[Редактирование:] Измененный заголовок для включения DEFAULTLIB, надо надеяться, лучшей фокусировки предмета. Я действительно вижу, что явная строка говорит
обработанный/DEFAULTLIB:mfc80d.lib
в ПОДРОБНОМ выводе / среди много другого (неотладка) значение по умолчанию освобождает. Куда это прибывает из? как я могу зафиксировать это?
Спасибо!
Вы должны проверить настройки библиотеки времени выполнения для ваших проектов, похоже, у вас есть несоответствие. В настройках вашего проекта в разделе C / C ++> Создание кода> Библиотека времени выполнения у вас есть выбор:
Похоже, что некоторые проекты в вашем решении могут использовать отладочную версию, в то время как другие используют версию без отладки. Или, в качестве альтернативы, некоторые проекты могут использовать версию Debug, а другие - версию DLL Debug. Для данной конфигурации решения вы хотите, чтобы все проекты использовали один и тот же параметр.