From: Barry S. <ba...@ba...> - 2010-09-25 09:37:50
|
On 1 Sep 2010, at 15:42, Paul Keating wrote: > I need to deploy PySvn 1.7.2 on a 64-bit Windows platform, even though my own workstation isn't 64-bit. So I need 64-bit DLLs, which aren't packaged, so I need to compile them myself from source. But first… Which version of python are you using? > > I'm compiling PyCXX 6.1.1 because it is a dependency of PySvn 1.7.2. But first… > > I'm running into this error: > > 2>d:\visual studio 2008 projects\pysvn-1.7.2\import\pycxx-6.1.1\demo\python2\range.hxx(115) : error C2440: '<function-style-cast>' : cannot convert from 'Py_ssize_t' to 'Py::Int' > 2> No constructor could take the source type, or constructor overload resolution was ambiguous I'll have to test this and see what happens. It may only be a bug in the demo code. > > My preprocessor directives include > > /D "_WIN64" /D "_M_X64" Do you have a 64 bit C++ compiler? I have "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\cl.exe" But I'm not sure how this was installed. Its from with the Windows SDK or the Visual C++ Express. These defines will not help on their own and my not be needed at all. > > (I'm fairly sure these are correct, because I copied them from the Python source project, which does compile) and this in turn causes ssize_t to be defined as __int64. I don't know what else to change to get this to compile. I'm a Python programmer who last programmed in C on OS/2 version 1.2 so I'm afraid the solution isn't obvious. I tried overloading the Int() constructor to accept a Py_ssize_t argument, but that just moved (and multiplied) the problem. CHanging to Py::Long is probable the way to go. > > (And, before you ask, I can’t continue to use 32-bit Python on the 64-bit machines. I have no choice about the Python interpreter because it is embedded in a 64-bit application and so needs a 64-bit PySvn .pyd file.) Barry |