Как исправить ошибку: не удается загрузить общую библиотеку, символ не определен - PullRequest
0 голосов
/ 16 июня 2020

У меня есть сценарий python, который преобразован в «исполняемый файл с одним файлом» с помощью pyinstaller. Исполняемый файл запускается на моем компьютере без проблем. Когда он работает на другом компьютере, кажется, что один из потоков перестает работать там, где используются gtk и wnck.

Не удалось загрузить общую библиотеку libwnck-3.so.0, на которую ссылается библиотека типов: /usr/lib/x86_64-linux-gnu/libwnck-3.0.so. 0: неопределенный символ: gdk_display_get_monitor_at_window

Приведенное выше предупреждение отображается, как только исполняемый файл запускается в терминале другого компьютера (я думаю, когда он читает инструкцию импорта).

Выдается ошибка при достижении следующей строки:

screen = Wnck.Screen.get_default()

GLib.GError: g-invoke-error-quark: не удалось найти wnck_screen_get_default: /usr/lib/x86_64-linux-gnu/libwnck-3.0.so.0: неопределенный символ: gdk_display_get_monitor_at_window (1)

Следующая функция связана с ошибкой происходит

import gi
gi.require_version('Wnck', '3.0')
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Wnck

def my_window():
    screen = Wnck.Screen.get_default()  -- this line throws error
    screen.force_update()
    while True:
        time.sleep(.5)
        while Gtk.events_pending():
            Gtk.main_iteration()
        new_window = screen.get_active_window()
        ....
        ....

Я использую - Ubuntu 16.04, xenial. | версия libgtk-3-0: 3.18.9

Другое использование компьютера - Ubuntu 18.04.4 bioni c | версия libgtk-3-0: 3.22.30

1 Ответ

0 голосов
/ 17 июня 2020

Копия libwnck, которую вы используете, была скомпилирована для версии GDK, которая содержит функцию gdk_display_get_monitor_at_window(), но копия GDK, установленная вами в вашей системе, не содержит этой функции.

Функция gdk_display_get_monitor_at_window() была представлена ​​в GTK 3.22, поэтому вы должны убедиться, что у вас установлен GDK 3.22 или более поздней версии.

...