Я написал программу C для отображения отображаемых в памяти видеофайлов с помощью GStreamer и GTK windows. Намерение состоит в том, чтобы создать совместно используемую библиотеку с CFFI, которую я могу вызвать из Python. Когда я пытаюсь импортировать библиотеку, я получаю сообщение о неопределенном символе.
Я воссоздал проблему с библиотекой, содержащей небольшую программу, которая просто отображает окно:
#include <gtk/gtk.h>
#include "test_cdef.h"
int main (int argc, char *argv[])
{
return test();
}
int test()
{
GtkWidget *main_window;
gtk_init (NULL, NULL);
main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(main_window), "Test");
gtk_window_set_default_size(GTK_WINDOW(main_window), 1600, 900);
gtk_widget_show_all(main_window);
g_main_loop_run (g_main_loop_new (NULL, TRUE));
return 0;
}
Когда Я пытаюсь импортировать библиотеку и получаю следующее сообщение:
ImportError: [library file name]: undefined symbol: gtk_window_get_type
После многих поисков проблемы, которые кажутся мне наиболее близкими, были исправлены путем изменения параметров компиляции / компоновки. Я использовал g cc для сборки программы. Я предполагаю, что CFFI использует то же самое для построения библиотеки.
Если эти параметры нужно изменить, у меня возникнет два вопроса: (1) какие параметры следует использовать и (2) как эти параметры передаются в CFFI ? Буду признателен за помощь в любом вопросе.
Моя ОС - Linux Mint 19.3. Другие пакеты: GTK-3.0, python 3.6.9, python3 -cffi 1.11.5-1.
Любая помощь приветствуется.