Использование модуля erlang wx приводит к ошибке: обнаружено несоответствие между версией программы и сборкой библиотеки

Я пытаюсь использовать модуль wx Эрланга, но он вылетает во всех функциях со следующей ошибкой:

Erlang/OTP 18 [erts-7.2] [source-e6dd627] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.2  (abort with ^G)
1> wx:demo().
Fatal Error: Mismatch between the program and library build versions detected.
                                                                              The library used 2.8 (no debug,Unicode,compiler with C++ ABI 1009,wx containers,compatible with 2.6),
          and your program used 2.8 (no debug,Unicode,compiler with C++ ABI 1002,wx containers,compatible with 2.6).
                                                                                                                    Aborted (core dumped)

Я на Ubuntu 15.10 с erlang 18.2 и wxWidgets 2.8 установлены.

Я уже удалил и переустановил как wxWidgets, так и erlang, что решило первую ошибку (получение неопределенной функции для каждой функции модуля wx), но после этого я не смог найти способ продолжить.

Что я должен сделать, чтобы успешно запустить его?

1 ответ

Решение

Библиотека и оболочки Erlang были скомпилированы с использованием двух разных компиляторов. Я не уверен, как вы установили какой-либо из них, но лучше всего собрать их оба из источников, используя ту версию g++, которая у вас есть локально.

В противном случае вы могли бы применить это изменение к заголовкам wxWidgets перед компиляцией оболочки Erlang для обеспечения совместимости между двумя версиями.

Другие вопросы по тегам