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.)