[Qgis-developer] Template programming in QGIS
Tim Sutton
lists at linfiniti.com
Fri May 13 05:30:48 EDT 2011
Hi Christoph
On Fri, May 13, 2011 at 9:32 AM, GOO Creations <goocreations at gmail.com> wrote:
> Hi all
>
> I'm currently writing C++ code that I want to use via Python with SIP. The
> following is a skeleton for my code:
>
> template<class T>
> class MyClass
> {
> MyClass(QString s);
> T* calculate();
> }
>
> class B
> {
> B();
> void doStuff();
> }
>
> void B::doStuff()
> {
> MyClass<int> var("");
> int *var2 = var.calculate();
> }
>
> The only class I've included in my SIP file is class B (and not class A).
> Everything compiles correctly, but when QGIS starts, I get a Python error:
>
> File "/home/goocreations/apps/share/qgis/python/qgis/utils.py", line 283,
> in _import
> mod = _builtin_import(name, globals, locals, fromlist, level)
> ImportError: /home/goocreations/apps/lib/libqgis_mylib.so.1.7.0: undefined
> symbol: _ZN15MyClassIiEC1E7QString
>
> This error seems strange, since I've never included MyClass in the SIP files
> and the only place MyClass is instantiated is in my cpp file (I didn't even
> include the MyClass directory in the cmake file that handles the SIP files).
> So I'm a bit confused of how Python gives an error on code that isn't
> linked to SIP.
>
> So, I've though that creating a SIP binding for MyClass may resolve the
> issue, but I can't figure out how I would use templates in SIP.
>
> By the may: when I remove the template from MyClass and make everything by
> default int, everything compiles and runs perfectly.
>
> Does anyone have an idea of why this is happening, or if I maybe have to
> include something special in the cmake files?
>
> Thanks
>
> Chris
>
I remember some discussions at the lisbon hackfest about templated c++
code and difficulties wrapping it with sip. Martin Dobias probably
know more, but I would add that we generally avoid template
programming in QGIS as it isnt very 'Qt' like, and also isnt very
consistent with the rest of our api.
Regards
Tim
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>
>
--
Tim Sutton - QGIS Project Steering Committee Member (Release Manager)
==============================================
Please do not email me off-list with technical
support questions. Using the lists will gain
more exposure for your issues and the knowledge
surrounding your issue will be shared with all.
Visit http://linfiniti.com to find out about:
* QGIS programming and support services
* Mapserver and PostGIS based hosting plans
* FOSS Consulting Services
Skype: timlinux
Irc: timlinux on #qgis at freenode.net
==============================================
More information about the Qgis-developer
mailing list