Как связать статические и динамические библиотеки одновременно?

Я использую QtCreator для своего проекта, мне нужно динамически связать некоторые библиотеки из-за лицензии, и у меня есть более крупная статическая библиотека, но я использую только небольшую ее часть. Когда я попробовал это, я получил сообщение об ошибке смешивания сборок.

base.lib(base.thread_local_storage.obj):-1: error: LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in Updater.obj

Я использую msvc2017-64. как настроить файл .pro для этого?


person Andrej Fogelton    schedule 22.03.2019    source источник
comment
можешь написать код ошибки?   -  person SepGuest    schedule 22.03.2019
comment
base.lib(base.thread_local_storage.obj): -1: ошибка: LNK2038: обнаружено несоответствие для «RuntimeLibrary»: значение «MT_StaticRelease» не соответствует значению «MD_DynamicRelease» в Updater.obj   -  person Andrej Fogelton    schedule 22.03.2019
comment
Это зависит от платформы. Например, разные в Linux и в Windows   -  person Basile Starynkevitch    schedule 22.03.2019


Ответы (1)


Ваши CRT-Bindings находятся в несоответствии.

В разделе «Проект»> «Все параметры C/C++»> «Библиотека времени выполнения»

Вам нужно изменить хотя бы одну из библиотек на MT или MD, чтобы больше не было несоответствия.

Здесь вы найдете решение: LNK2038: обнаружено несоответствие для "RuntimeLibrary ': значение 'MT_StaticRelease' не соответствует значению 'MD_DynamicRelease' в файле.obj

Если вы скомпилируете библиотеки с помощью Visual Studio

person SepGuest    schedule 22.03.2019
comment
Для QtCreator: stackoverflow.com/questions/16688079/ - person SepGuest; 22.03.2019