[C++-sig] [Py++] Undefined symbols for static const int member of class
Roman Yakovenko
roman.yakovenko at gmail.com
Fri May 21 13:49:12 CEST 2010
On Fri, May 21, 2010 at 1:05 PM, Brian O'Kennedy <brokenn at gmail.com> wrote:
> Hi,
> I'm wrapping a very simple class using PyPlusPlus.
> ---- snip ----
> class testclass
> {
> public:
> static const int a = 99;
> };
> ---- /snip ----
> And Py++ exposes the static member with a def_readonly("a", testclass::a )
> call. When I import this module into python I get an undefined symbol for
> testclass::a.
> ImportError: ./testwrapper.so: undefined symbol: _ZN9testclass1aE
> I understand that the static member has no storage and thus boost python
> cannot find the address of it. However, I was hoping there is a way to solve
> this kind of (common?) problem using Py++ to perhaps generate a getter
> function or something similar. How would one do this?
Try to move "a" initialization to a .cpp file.
I also suggest you to take a look on Py++ unittests, especially on
"statics_tester.py" and "statics_to_be_exported.[c|h]pp" files. They
deal with exactly your use case
--
Roman Yakovenko
C++ Python language binding
http://www.language-binding.net/
More information about the Cplusplus-sig
mailing list