VC ++/DEFAULTLIB проблема

При соединении моего 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

в ПОДРОБНОМ выводе / среди много другого (неотладка) значение по умолчанию освобождает. Куда это прибывает из? как я могу зафиксировать это?

Спасибо!

5
задан Kate Gregory 8 July 2010 в 16:00
поделиться

1 ответ

Вы должны проверить настройки библиотеки времени выполнения для ваших проектов, похоже, у вас есть несоответствие. В настройках вашего проекта в разделе C / C ++> Создание кода> Библиотека времени выполнения у вас есть выбор:

  • Многопоточная
  • Многопоточная отладка
  • Многопоточная библиотека DLL
  • Многопоточная библиотека отладки

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

2
ответ дан 15 December 2019 в 00:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: