From: Andrew A. <an...@ob...> - 2007-04-27 17:30:53
|
I ran into the same problem using SWIG 1.3.29 with Ruby 1.8.5 in msys/=20= mingw on woe32 (Windows XP). After much digging I discovered that ruby.h, or more specifically the =20= win32.h it includes, is #defining 'read' & 'write' macros that are =20 breaking iostream: =46rom Ruby's win32.h: #define read(f, b, s) rb_w32_read(f, b, s) #define write(f, b, s) rb_w32_write(f, b, s) As a workaround I manually edited the SWIG generated wrapper file and =20= inserted: #include <iostream> before: #include <ruby.h> This hack worked around the problem, but I have yet to find a =20 satisfying / automatic fix. I tried putting: %header %{ #include <iostream> %} in my interface file, but that 'include' code is still spliced into =20 the generated wrapper *after* the '#include <ruby.h>' line, which is =20 of course too late. this appears to be a Ruby bug... it seems unreasonable to #define =20 macros with such generic names as 'read' and 'write' in a header and =20 expect no namespace conflicts. On Apr 27, 2007, at 12:34 AM, Paul McCumber wrote: > I have a pretty simple class exposed. I=92ve used the tool in =20 > Visual Studio for quite a while with Tcl and know a little bit =20 > about swig and Visual Studio but I can=92t get a =93Hello World=94 =20 > working here with Ruby. I get the following error and somebody =20 > else got the same thing and it didn=92t look like anyone followed =20 > up. Any clue to what I=92m doing to get messages such as: > > > > RubyClient_wrap.cxx > > c:\program files\microsoft visual studio\vc98\include\ostream=20 > (241) : warning C4003: not enough actual parameters for macro 'write' > > c:\program files\microsoft visual studio\vc98\include\ostream=20 > (241) : error C2059: syntax error : ')' > > c:\program files\microsoft visual studio\vc98\include=20 > \ostream(272) : see reference to class template instantiation =20 > 'std::basic_ostream<_E,_Tr>' being compiled > > c:\program files\microsoft visual studio\vc98\include\ostream=20 > (242) : error C2143: syntax error : missing ')' before '{' > > > > Paul > > ----------------------------------------------------------------------=20= > --- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/=20 > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user |