Несоответствие символов между двумя библиотеками повышения из-за [abi: cxx11] - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть программа C ++, которая ссылается на libboost_regex.so.1.68, у меня есть две версии файлов so в разных местах:

/usr/local/lib/libboost_regex.so.1.68 (compiled with gcc-7)
/usr/share/miniconda3/lib/libboost_regex.so.1.68 (binaries installed by conda)

Вторая версия предназначена для запуска привязки Pythons моей программы C ++.При запуске привязок python, python пытается использовать второй файл .so, и я получаю ошибку:

undefined symbol : boost::re_detail_106800::cpp_regex_traits_implementation<char>::transform_primary[abi:cxx11](char const*, char const*) const

Я пытался получить символы обоих файлов .so, используя: (* nm *.so | c++filt) и понял, что между ними есть разница:

В первой библиотеке есть символ:

cpp_regex_traits_implementation<char>::transform_primary(...

В то время как во второй папке so (той, которая вызывает проблемы) есть:

cpp_regex_traits_implementation<char>::transform_primary[abi:cxx11](...

Есть похожие, за исключением [abi:cxx11]

Что такое [abi:cxx11]?Могу ли я перестроить свой /usr/local буст, чтобы в его символах был abi :: cxx11, чтобы избежать несоответствия?

...