Я пытаюсь внедрить wxPython в приложение wxWidgets и получаю следующую ошибку:
../src/common/object.cpp(251): утверждение "classTable->Get(m_className) == NULL" не удалось в Register(): класс "wxCommandEvent" уже находится в таблице RTTI - вы использовали IMPLEMENT_DYNAMIC_CLASS() несколько раз или дважды связал какой-то объектный файл)?
Я проследил это до: wxPyCoreAPIPtr = (wxPyCoreAPI*)PyCObject_Import("wx.core", "_wxPyCoreAPI");
Итак, я предполагаю, что это терпит неудачу, потому что он пытается открыть .so, который уже был загружен (основная библиотека wxwidgets, которая необходима как для кода C, так и для Python). Я могу получить дескриптор открытого .so с помощью флага dlopen RTLD_NOLOAD.
Есть ли способ передать этот дескриптор Python и сказать ему «загрузить» этот дескриптор в контекст интерпретатора?
Изменить: только что заметил, что эта проблема воспроизводится во «встроенном» образце в wxPython с использованием wxWidgets origin/WX_3_0_BRANCH, Python 2.7, wxPython origin/master.
Кроме того, это может быть связано с конфигурациями gtk3... казалось, что это работает, когда я компилировал с gtk2.