У меня возникла проблема с cmake и ссылкой на мое приложение: Я работаю над существующим проектом. В этом проекте используется модифицированный libjpeg (статический lib), и мой исполняемый файл связан с ним.Ссылка на две аналогичные библиотеки с cmake
target_link_libraries(myprog jpeglib)
Теперь я хочу добавить новую функцию, которая использует turbojpeg lib.
add_library(newfeature SHARED ${LIBVNCSERVER_SOURCES})
set_target_properties(newfeature PROPERTIES DEFINE_SYMBOL DLLDEFINE)
target_link_libraries(newfeature turbojpeg-static)
target_link_libraries(newfeature LINK_INTERFACE_LIBRARIES)
Моя программа будет связана с этой общей библиотеки:
target_link_libraries (myprog jpeglib newfeature)
В Windows все работает отлично. Но если я использую эту функцию под Linux, я получаю сообщение об ошибке:
JPEG Error: JPEG parameter struct mismatch: library thinks size is 488, caller expects 504
Эта ошибка возникает из libjpeg.
Все, что я нашел в Google, не работает. Я предполагаю, что в новой библиотеке newfeature используется jpeglib из myprog, хотя newfeature статически связана с turbojpeg lib. newfeature должен быть автономным .so или .dll файлом Если бы я изменил порядок привязки, я получил ту же ошибку, но он генерируется из turbojpeg.
Связывание myprog с turbojpeg-static невозможно, поскольку оно несовместимо с модифицированным libjpeg.
Может ли кто-нибудь помочь? Правильно ли мое предположение?
Эта ошибка возникает, когда вы вызываете функцию 'jpeglib' или' newfeature'? Похоже, что ваша библиотека 'turbojpeg' просто может быть перестроена против той же базовой версии' libjpeg', которую вы использовали ранее. –
Ошибка возникает, когда я вызываю функцию newfeature. Я попробую перестроить, спасибо за подсказку – plettix