[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