On Wednesday 06 April 2011 19:07:34 kungfuelmosan wrote:
> Hey Hugo,
> 
> Yep, I'm writing it by hand. It is bindings for a C library though so
> I am going to look into using Shiboken to generate the extension but
> I'd like to get my current hand written code working first.

Ok, so you'll need to do what the generated code does:

Put this in the init function of your module to load the QtGui python module 
before loading your module.

if (!Shiboken::importModule("PySide.QtCore", &SbkPySide_QtCoreTypes)) {
    PyErr_SetString(PyExc_ImportError,"could not import PySide.QtCore");
    return;
}

if (!Shiboken::importModule("PySide.QtGui", &SbkPySide_QtGuiTypes)) {
    PyErr_SetString(PyExc_ImportError,"could not import PySide.QtGui");
    return;
}

and declare a global variables:

PyTypeObject** SbkPySide_QtCoreTypes;
PyTypeObject** SbkPySide_QtGuiTypes;

This black magic is needed to have access of types declared in other modules 
without linking them. I recommend you to see the implementation of 
importModule function to feel more comfortable before paste this code in your 
module.

 
> When you say depends on QtCore / QtGui, do you mean the standard Qt
> 4.7 libQtCore.so / libQtGui.so or a wrapper lib in PySide?

Python modules can't link to other python modules, so the big header depends 
only on libQtCore.so and libQtGui.so, not the binding! and libshiboken.so.

> Thanks again.
> D
> 
> On Apr 7, 12:55 am, Hugo Parente Lima <[email protected]> wrote:
> > On Wednesday 06 April 2011 02:44:55 kungfuelmosan wrote:
> > > Hey Hugo,
> > > 
> > > Thanks for the reply. I've got it to compile by adding these include
> > > search paths :
> > > 
> > > -I.../pyside_qt4.7-1.0.1_64/include
> > > -I.../pyside_qt4.7-1.0.1_64/include/shiboken
> > > -I.../pyside_qt4.7-1.0.1_64/include/PySide
> > > -I.../pyside_qt4.7-1.0.1_64/include/PySide/QtCore
> > > -I.../pyside_qt4.7-1.0.1_64/include/PySide/QtGui
> > > 
> > > So pyside_qtgui_python.h includes fine now.
> > > 
> > > But when I go to load my python extension module all I ever get is :
> > > 
> > > undefined symbol: SbkPySide_QtCoreTypes
> > 
> > Are you writing your extension by hand? or it's generated using Shiboken
> > generator?
> > Anyway you need to tell that your extension depends on QtCore and QtGui,
> > if you are using Shiboken generator a simple load-typesystem tag does
> > the trick.
> > 
> > > And the only place I seem to be able to find that symbol is in the
> > > actual PySide.QtCore python module :
> > > 
> > > nm .../pyside_qt4.7-1.0.1_64/lib/python2.6/site-packages/PySide/
> > > QtCore.so | grep SbkPySide_QtCoreTypes
> > > 0000000000f0d490 b SbkPySide_QtCoreTypes
> > > 
> > > Even if I add that to the link list its still not happy. Is that what
> > > I should be linking in?
> > > 
> > > Cheers in advance,
> > > D
> > > 
> > > On Apr 6, 12:38 am, Hugo Parente Lima <[email protected]> wrote:
> > > > On Monday 04 April 2011 22:48:14 kungfuelmosan wrote:
> > > > > Hey All,
> > > > > 
> > > > > Can anyone point me in the right direction to some info on running
> > > > > PySide embedded in a C++ Qt Application?
> > > > > 
> > > > > I have a Python C Extension library that I'm converting from
> > > > > PyQt/sip to PySide/Shiboken and in one part I have a PyObject*
> > > > > passed into my C Extension function that im expecing to be a
> > > > > PySide QWidget object, is there a way I can get the internal C++
> > > > > QWidget pointer from the python wrapper?
> > > > > 
> > > > > Some googling led me to try :
> > > > > 
> > > > > #include <pyside_qtgui_python.h>
> > > > > 
> > > > > PyObject *someWrappedObject = ... ;
> > > > > 
> > > > > QWidget *w =
> > > > > Shiboken::Converter<QWidget*>::toCpp(someWrappedObject);
> > > > > 
> > > > > But the #include pyside_qtgui_python.h seems to have a million and
> > > > > one dependencies so I'm not sure if this is what I;m meant to be
> > > > > doing?
> > > > 
> > > > The only dependency is QtCore, QtGui and Shiboken itself, there are a
> > > > lot of templates for sure, but if you don't instantiate them they
> > > > will behave.
> > > > 
> > > > > Are there any docs on this / a nicely wrapped up public include.h
> > > > > for Shiboken?
> > > > > 
> > > > > Cheers,
> > > > > Daniel
> > 
> > --
> > Hugo Parente Lima
> > INdT - Instituto Nokia de Tecnologia
> > 
> >  signature.asc
> > < 1KViewDownload
> > 
> > _______________________________________________
> > PySide mailing list
> > [email protected]http://lists.pyside.org/listinfo/pyside
> 
> _______________________________________________
> PySide mailing list
> [email protected]
> http://lists.pyside.org/listinfo/pyside

-- 
Hugo Parente Lima
INdT - Instituto Nokia de Tecnologia

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
PySide mailing list
[email protected]
http://lists.pyside.org/listinfo/pyside

Reply via email to