From: Varun K. <var...@ya...> - 2007-03-01 14:58:29
|
Hey guys,=0A=0AI have the following lines in my .i file : =0A=0A<snip>=0A#i= f (__GNUC__ >=3D 3)=0A typedef __gnu_cxx::hash_map <int, int> IntMap;=0A#e= lse=0A typedef std::hash_map <int, int> IntMap;=0A#endif=0A</snip>=0A=0Abu= t __GNUC__ doesn't seem to be defined in the SWIG compile environment. I ne= ed this to make SWIG aware of the IntMap type which is used in my class's i= nterface. I already have this conditional-compile logic in a %{ ... %} sect= ion, so it goes through untouched to the generated cxx wrapper. The problem= is the lack of the __GNUC__ symbol, which always leads to hash_map being u= sed from the std namespace.=0A=0AHas anyone ever encountered a similar prob= lem before, and is there a known solution for it? =0A=0AI'm using a built-f= rom-source SWIG-1.3.31 on RHEL4 (gcc-3.4.6) for generating perl5 wrappers. = Thanks for taking the time to help me out.=0A=0AVarun=0A=0A |
From: Josh C. <jc...@nc...> - 2007-03-01 15:28:55
|
On Thu, 1 Mar 2007, Varun Kapoor wrote: > but __GNUC__ doesn't seem to be defined in the SWIG compile environment. Right. After all, it can't know what version of what compiler you intend to use. > Has anyone ever encountered a similar problem before, and is there a > known solution for it? If it's as simple as it sounds, you can just put #define __GNUC__ 3 (or whatever) in your .i (sufficiently early, of course). If you need to define it sometimes but not others, you can use conditionals or use SWIG's -D on the command line. Josh |