Я хочу обернуть много классов, написанных на C ++ с помощью PySide 2«s shiboken2 чтобы быть доступным в питон. Однако при попытке обернуть более сложный код возникают некоторые проблемы.
У меня есть два разных файла с двумя разными заголовками и в разных пространствах имен:
#include <gui/main.h>
и второй:
#include <back/foo.h>
Схема этого кода написана на app.xml быть готовым к упаковке:
<typesystem package="app">
<load-typesystem name="typesystem_core.xml" generate="no"/>
<load-typesystem name="typesystem_widgets.xml" generate="no"/>
<namespace-type name="gui">
<object-type name="Main"/>
</namespace-type>
<namespace-type name="back">
<object-type name="Foo"/>
</namespace-type>
</typesystem>
Но упакованный код, кажется, забывает оригинальные пути, и поэтому файлы заголовка не могут быть найдены:
#include <main.h>
#include <foo.h>
Мне интересно, как это исправить. Код, конечно, компилируется, когда я вручную копирую эти файлы в папку, где находится код переноса; однако в нашем приложении много заголовков с одинаковыми именами, и поэтому эту проблему нужно решить.
С небольшой помощью разработчика # Кварта-PySide Мне удалось решить эту проблему, которая беспокоила меня некоторое время.
<typesystem package="app">
<extra-includes>
<include file-name="gui/main.h" location="global"/>
<include file-name="back/foo.h" location="global"/>
</extra-includes>
<load-typesystem name="typesystem_core.xml" generate="no"/>
<load-typesystem name="typesystem_widgets.xml" generate="no"/>
<namespace-type name="gui">
<include file-name="gui/main.h" location="global"/>
<object-type name="Main">
<include file-name="gui/main.h" location="global"/>
</object-type>
</namespace-type>
<namespace-type name="back">
<include file-name="back/foo.h" location="global"/>
<object-type name="Foo">
<include file-name="back/foo.h" location="global"/>
</object-type>
</namespace-type>
</typesystem>
Обратите внимание, что я добавил строки, такие как:
<include file-name="gui/main.h" location="global"/>
а также
<extra-includes>
в начале.
Других решений пока нет …