Hi PySide users,
To answer my question, hoping this solution would help anyone
encountering this issue.
The problem comes from C++ methods' signature featuring tabs. In our
project's case, it was double tab[size] in several methods.
There is no proper ways to ask Shiboken to change the method's
signature during the binding (i.e. by using some API-Extractor
binding rules, like <modify-function> with
<modify-argument> tags), as it seems to be a bug in Shiboken
(not solved) :
https://bugreports.qt-project.org/browse/PYSIDE-92?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
In our case, the solution was to change the C++ methods' signature
with pointors instead, which is acceptable in the native C++ code.
Feel free to react to this solution,
Nicolas.
On 11/18/2013 06:47 PM, Nicolas SAUBAT
wrote:
Hello PySide users,
Working on a Qt/C++ based project : http://camitk.imag.fr,
I'm looking for a way to bind this framework with Python, using
PySide.
I've read the documentation and successfully used Shiboken to wrap
the foo library provided in the tutorials.
Now, I've replaced the C++ foo-library of the PySide tutorials and
when generating the wrapping, Shiboken outputs the following error
:
Could not find a minimal constructor for type 'Array'. This will
result in a compilation error.
The configuration of the library is made using CMake, copying the
structure of the foo-library PySide tutorials.
Shiboken is called with the following arguments
- the typesystem PATH
- the include directories to look for the header files
- pyside_global.h file (copied from /usr/include/PySide)
- global.h (including all the C++ header files of the library
to wrap)
- the input system file : typesystem_camitk.xml with the
following content :
<?xml version="1.0"?>
<typesystem package="camitk_package">
<!-- Basic system types, which I know are needed
-->
<load-typesystem name="typesystem_core.xml" generate="no"
/>
<load-typesystem name="typesystem_gui.xml" generate="no"
/>
<!-- Optional system types, that might be necessary
for more complex projects -->
<!--<load-typesystem name="typesystem_core_common.xml"
generate="no" />
<load-typesystem name="typesystem_core_x11.xml"
generate="no" />
<load-typesystem name="typesystem_core_maemo.xml"
generate="no" />
<load-typesystem name="typesystem_gui_common.xml"
generate="no" />
<load-typesystem name="typesystem_gui_simulator.xml"
generate="no" />
<load-typesystem name="typesystem_templates.xml"
generate="no" />
<load-typesystem name="typesystem_declarative.xml"
generate="no" />
<load-typesystem name="typesystem_uitools.xml"
generate="no" />
<load-typesystem name="typesystem_help.xml" generate="no"
/>
<load-typesystem name="typesystem_test.xml" generate="no"
/>
<load-typesystem name="typesystem_network.xml"
generate="no" />
<load-typesystem name="typesystem_phonon.xml"
generate="no" />
<load-typesystem name="typesystem_script.xml"
generate="no" />
<load-typesystem name="typesystem_scripttools.xml"
generate="no" />
<load-typesystem name="typesystem_xml.xml" generate="no"
/>
<load-typesystem name="typesystem_xmlpatterns.xml"
generate="no" />
<load-typesystem name="typesystem_opengl.xml"
generate="no" />
<load-typesystem name="typesystem_uitools.xml"
generate="no" />
<load-typesystem name="typesystem_webkit.xml"
generate="no" />
<load-typesystem name="typesystem_webkit_simulator.xml"
generate="no" />-->
<namespace-type name="camitk" />
<object-type name="camitk::ActionWidget" />
<object-type name="camitk::HistoryItem" />
<object-type name="camitk::RendererWidget" />
<object-type name="camitk::InteractiveViewer" />
<object-type name="camitk::Explorer" />
<object-type name="camitk::PropertyExplorer" />
<object-type name="camitk::MedicalImageViewer" />
<object-type name="camitk::Viewer" />
<object-type name="camitk::ActionViewer" />
<object-type name="camitk::MeshComponentExtension" />
<object-type name="camitk::MeshComponent" />
<object-type name="camitk::Slice" />
<object-type name="camitk::ComponentExtension" />
<object-type name="camitk::ComponentPopupMenu" />
<object-type name="camitk::Component" />
<object-type name="camitk::Geometry" />
<object-type name="camitk::GeometricObject" />
<object-type name="camitk::SingleImageComponent" />
<object-type name="camitk::MedicalDataOriginDialog" />
<object-type name="camitk::ImageComponent" />
<object-type name="camitk::ImageComponentExtension" />
<object-type name="camitk::HistoryComponent" />
<object-type name="camitk::Core" />
<object-type name="camitk::ObjectController" />
<object-type name="camitk::Log" />
<object-type name="camitk::PlaneC" />
<object-type name="camitk::SliderSpinBoxWidget" />
<object-type name="camitk::SliderTextWidget" />
<object-type name="camitk::ActionExtension" />
<object-type name="camitk::Action" />
<object-type name="camitk::ExtensionManager" />
<object-type name="camitk::Application" />
<object-type name="camitk::SettingsDialog" />
<object-type name="camitk::MainWindow" />
</typesystem>
I've been trying to include several typesystems (the ones
commented 'optional'), but this did not solve the problem.
I'm running a Debian Wheezy (stable) Linux distribution using
Shiboken 1.1.1. I've also tested the 1.1.8 and 1.2.1 version of
Shiboken (with a Kubuntu 13.10 distribution), but the issue
remains.
I've found some people on the net, also encountering this
problem, but with no solution on how to solve it. This is why
I'm turning to your binding's wisdom !
As I'm absolutely not mastering the Shiboken tool, I could have
made a mistake and if someone has an idea, he / she is more than
welcome !
Thanks a lot,
Nicolas S.
--
Nicolas SAUBAT
Ingénieur Recherche et Développement
Equipe GMCAO - Laboratoire TIMC-IMAG
Pavillon Taillefer
Allée des Alpes - Domaine de la Merci
38706 La Tronche
Tel : (33)04 56 52 00 10
_______________________________________________
PySide mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/pyside
--
Nicolas SAUBAT
Ingénieur Recherche et Développement
Equipe GMCAO - Laboratoire TIMC-IMAG
Pavillon Taillefer
Allée des Alpes - Domaine de la Merci
38706 La Tronche
Tel : (33)04 56 52 00 10
|
_______________________________________________
PySide mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/pyside