Desmond Daignault
2012-Oct-24 15:20 UTC
[Xapian-devel] Trying to get Search::Xapian perl module to compile on win32
Greetings. First, I'd like to thank you for producing a nice search tool. Secondly, I'm not sure this is the right list to send this to. Please correct me if this is not the best place to ask. I'm having trouble getting Search::Xapian to compile on win32 using visual studio 2008. I have made quite a lot of progress but I am currently stuck. The xapian-core library was built with no issues using the win32 makefiles that are provided here: http://www.flax.co.uk/xapian_binaries One of the issues that building on win32 (without mingw or any other unix like interface) is that the xapian-config program is not built when building xapian-core on win32. I modified the Makefile.PL script to account for this as best I could. After generating the Makefile, I had to modify it some to force the compiler to recognize that all the xs modules are written in C++. This is what I am getting: cl.exe -c -IC:\sandbox\xapian-core-1.2.8 -IC:\sandbox\xapian-core-1.2.8\common -IC:\sandbox\xapian-core-1.2.8\win32 -IC:\CVSROOT\emsng_build\sandbox\xapian-core-1.2.8\include -IC:\CVSROOT\emsng_build\win32\install\include -nologo -O1 -MD -D NDEBUG -Zi -W3 -EHsc -MD -Zi -DNDEBUG -O1 -DVERSION=\"1.2.8.0\" -DXS_VERSION=\"1.2.8.0\" "-IC:\CVSROOT\emsng_build\win32\install\perl\lib\CORE" -DWIN32 -D__WIN32__ -D_WIN32 -D_WINDOWS -D "HAVE_VSNPRINTF" -D "HAVE_STRDUP" -D _USE_32BIT_TIME_T" -D"D_CRT_SECURE_NO_DEPRECATE" Xapian.cc Xapian.cc C:\CVSROOT\emsng_build\sandbox\xapian-core-1.2.8\include\xapian/weight.h(240) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) C:\CVSROOT\emsng_build\sandbox\xapian-core-1.2.8\include\xapian/weight.h(249) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) Xapian.xs(110) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) Xapian.xs(151) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) ./XS/WritableDatabase.xs(30) : error C2039: 'win32_open' : is not a member of 'Xapian::InMemory' ./XS/WritableDatabase.xs(30) : error C2660: 'win32_open' : function does not take 0 arguments ./XS/WritableDatabase.xs(50) : warning C4003: not enough actual parameters for macro 'close' ./XS/WritableDatabase.xs(50) : error C2039: 'win32_close' : is not a member of 'Xapian::WritableDatabase' C:\CVSROOT\emsng_build\sandbox\xapian-core-1.2.8\include\xapian/database.h(474) : see declaration of 'Xapian::WritableDatabase' NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code '0x2' Stop. Any assistance would be greatly appreciated. -- Sincerely, Desmond Daignault Senior Software Engineer ? O'NEIL & ASSOCIATES, INC. ********************************************************************** Confidentiality Notice The information contained in this e-mail is confidential and intended for use only by the person(s) or organization listed in the address. If you have received this communication in error, please contact the sender at O'Neil & Associates, Inc., immediately. Any copying, dissemination, or distribution of this communication, other than by the intended recipient, is strictly prohibited. **********************************************************************
Charlie Hull
2012-Oct-24 15:32 UTC
[Xapian-devel] Trying to get Search::Xapian perl module to compile on win32
On 24/10/2012 16:20, Desmond Daignault wrote:> Greetings. First, I'd like to thank you for producing a nice search > tool. Secondly, I'm not sure this is the right list to send this to. > Please correct me if this is not the best place to ask. > > I'm having trouble getting Search::Xapian to compile on win32 using > visual studio 2008. I have made quite a lot of progress but I am > currently stuck. > > The xapian-core library was built with no issues using the win32 > makefiles that are provided here: > http://www.flax.co.uk/xapian_binaries > > One of the issues that building on win32 (without mingw or any other > unix like interface) is that the xapian-config program is not built > when building xapian-core on win32. > > I modified the Makefile.PL script to account for this as best I > could. After generating the Makefile, I had to modify it some to > force the compiler to recognize that all the xs modules are written > in C++.Hi, I maintain the Windows build files (although to be honest I haven't made any updates recently due to pressure of work). Can I ask why you aren't using the prepackaged Perl bindings rather than building from scratch? Cheers Charlie> > This is what I am getting: > > cl.exe -c -IC:\sandbox\xapian-core-1.2.8 > -IC:\sandbox\xapian-core-1.2.8\common > -IC:\sandbox\xapian-core-1.2.8\win32 > -IC:\CVSROOT\emsng_build\sandbox\xapian-core-1.2.8\include > -IC:\CVSROOT\emsng_build\win32\install\include -nologo -O1 -MD -D > NDEBUG -Zi -W3 -EHsc -MD -Zi -DNDEBUG -O1 -DVERSION=\"1.2.8.0\" > -DXS_VERSION=\"1.2.8.0\" > "-IC:\CVSROOT\emsng_build\win32\install\perl\lib\CORE" -DWIN32 > -D__WIN32__ -D_WIN32 -D_WINDOWS -D "HAVE_VSNPRINTF" -D "HAVE_STRDUP" > -D _USE_32BIT_TIME_T" -D"D_CRT_SECURE_NO_DEPRECATE" Xapian.cc > Xapian.cc > C:\CVSROOT\emsng_build\sandbox\xapian-core-1.2.8\include\xapian/weight.h(240) > : warning C4800: 'int' : forcing value to bool 'true' or 'false' > (performance warning) > C:\CVSROOT\emsng_build\sandbox\xapian-core-1.2.8\include\xapian/weight.h(249) > : warning C4800: 'int' : forcing value to bool 'true' or 'false' > (performance warning) Xapian.xs(110) : warning C4800: 'int' : forcing > value to bool 'true' or 'false' (performance warning) Xapian.xs(151) > : warning C4800: 'int' : forcing value to bool 'true' or 'false' > (performance warning) ./XS/WritableDatabase.xs(30) : error C2039: > 'win32_open' : is not a member of 'Xapian::InMemory' > ./XS/WritableDatabase.xs(30) : error C2660: 'win32_open' : function > does not take 0 arguments ./XS/WritableDatabase.xs(50) : warning > C4003: not enough actual parameters for macro 'close' > ./XS/WritableDatabase.xs(50) : error C2039: 'win32_close' : is not a > member of 'Xapian::WritableDatabase' > C:\CVSROOT\emsng_build\sandbox\xapian-core-1.2.8\include\xapian/database.h(474) > : see declaration of 'Xapian::WritableDatabase' NMAKE : fatal error > U1077: 'C:\WINDOWS\system32\cmd.exe' : return code '0x2' Stop. > > Any assistance would be greatly appreciated. > > -- Sincerely, Desmond Daignault Senior Software Engineer > > O'NEIL & ASSOCIATES, INC. > > > > ********************************************************************** > >Confidentiality Notice> The information contained in this e-mail is confidential and intended > for use only by the person(s) or organization listed in the address. > If you have received this communication in error, please contact the > sender at O'Neil & Associates, Inc., immediately. Any copying, > dissemination, or distribution of this communication, other than by > the intended recipient, is strictly prohibited. > ********************************************************************** > > > > _______________________________________________ Xapian-devel mailing > list Xapian-devel at lists.xapian.org > http://lists.xapian.org/mailman/listinfo/xapian-devel >
Olly Betts
2012-Oct-24 16:07 UTC
[Xapian-devel] Trying to get Search::Xapian perl module to compile on win32
On Wed, Oct 24, 2012 at 03:20:21PM +0000, Desmond Daignault wrote:> ./XS/WritableDatabase.xs(30) : error C2039: 'win32_open' : is not a member of 'Xapian::InMemory' > ./XS/WritableDatabase.xs(30) : error C2660: 'win32_open' : function does not take 0 arguments > ./XS/WritableDatabase.xs(50) : warning C4003: not enough actual parameters for macro 'close' > ./XS/WritableDatabase.xs(50) : error C2039: 'win32_close' : is not a member of 'Xapian::WritableDatabase'Sounds to me like something is playing macro games along the lines of: #define open win32_open #define close win32_close And that is mangling the method names in our code. I don't use windows, but I can tell you it isn't anything in Xapian doing this. Cheers, Olly