[Pyrex] "Py_NoneStruct not located"
Gary Stephenson
garys at ihug.com.au
Tue Dec 9 10:50:02 CET 2003
Hello Pyrex listemes,
Below is a .pyx script.I'm having problems with. I'm getting a clean
generate, compile and link OK, but when I attempt to run the resultant .exe,
I get:
"The procedure entry point Py_NoneStruct could not be located in the
dynamic link library python23.dll"
Can anybody provide me with a clue here? I've already cut down my script to
remove all references to None, Py_None, NULLs, etc, but to no avail. fwiw
I'm using Pyrex 0.9 with ActiveState 2.3 (build 232) on Windows 2K (SP3).
many tias,
gary
PS - I tried to use .pxd files, but found problems - in particular the
statement
cdef extern from "xppcon.h"
failed to cause an actual include statement to appear in the generated .c
file :-(
************* begin pyx script ************
from scanners import xppScanner
ctypedef unsigned long ULONG
ctypedef void * XppParamList
ctypedef long BOOL
ctypedef void * ContainerHandle
cdef extern from "windows.h" :
pass
cdef extern from "xppdef.h" :
pass
cdef extern from "python.h" :
object PyString_FromStringAndSize(char *s, int len)
void Py_Initialize()
void Py_Finalize()
cdef extern from "xppcon.h" :
ULONG _conGetNL( void * hNumeric, long *nlValue)
void * _conParam(void * pList, unsigned long paramIndex, long
*bReference)
void * _conPutC( void * hDest, char *string)
void * _conPut( void * hDest, void * hSrc)
BOOL _retnl(XppParamList pList, long numInt)
BOOL _ret(XppParamList pList)
unsigned long _conRLockC( void * hString, char **ppString, unsigned
long *ulSize)
unsigned long _conUnlockC( void * hString)
cdef object xppStr2pyStr( ContainerHandle ch1 ) :
cdef ULONG nLen
cdef char *cIn
cdef object cOut
_conRLockC( ch1, &cIn, &nLen )
cOut = PyString_FromStringAndSize( <char*>cIn, <int>nLen )
_conUnlockC( ch1 )
return cOut
cdef public BOOL C_OX_PYINITIALIZE( XppParamList pList ) :
Py_Initialize()
_ret( pList )
cdef public BOOL C_OX_PYFINALIZE( XppParamList pList ) :
Py_Finalize()
_ret( pList )
cdef public BOOL C_OX_XPPSCANNER( XppParamList pList ) :
cdef ContainerHandle ch1
cdef ULONG nRslt,nLen
cdef BOOL pRef,cStr
cdef object oScan
ch1 = _conParam( pList, 1, &pRef )
cStr = xppStr2pyStr( ch1 )
oScan = xppScanner( cStr ).gen()
nRslt = <ULONG>oScan
_retnl( pList, nRslt )
cdef public BOOL C_OX_XPPSCANNER_NEXTTOKEN( XppParamList pList ) :
cdef ContainerHandle ch1,ch2,ch3
cdef ULONG nLen
cdef BOOL pRef
ch1 = _conParam( pList, 1, &pRef )
ch2 = _conParam( pList, 2, &pRef )
ch3 = _conParam( pList, 3, &pRef )
_conGetNL( ch1, <long*>&nLen )
oScan = <object>nLen
cTyp,cVal = oScan.next()
_conPutC( ch2,cTyp )
_conPutC( ch3,cVal )
_ret( pList )
More information about the Pyrex
mailing list