[Tutor] First extension
Emile van Sebille
emile at fenx.com
Sun Mar 28 18:25:01 CEST 2010
On 3/26/2010 7:03 PM James Reynolds said...
> Hello All,
>
> I'm trying to write my first extension module, and I am getting the
> following error in my command prompt and I was hoping you all could help me.
Hi James,
You'll probably get further asking on the setuptools support list.
Checking http://pypi.python.org/pypi/setuptools I see links to the list
at http://mail.python.org/pipermail/distutils-sig/
Those are the guys that will want this info and will most likely help
you work through it.
HTH,
Emile
>
> I have taken the following steps already:
>
>
> 1. My path is set for mingw/bin as well as python31.
> 2. There is a file in my disutils folder called disutils.cfg that says
> [build] compiler = mingw32
> 3. The instructions in the 3.1 documentation state the following: "These
> instructions only apply if you’re using a version of Python prior to 2.4.1
> with a MinGW prior to 3.0.0 (with binutils-2.13.90-20030111-
> 1. http://docs.python.org/py3k/install/index.html
> 2. I am using Python 3.1 and the latest MinGW.
> 4. I tested gcc/mingw by doing C:\python31>gcc -shared pdv.c -o pdv.dll
> and the test was succesful (or at least I was not given any errors while
> doing the compile)
> 5. I searched on the internet and the closest thing I can find is the
> following: http://bugs.python.org/issue4709
>
>
> Below you will find the following
>
> One, the error report
> two,my setup.py file
> three, the file I am trying to turn into a python extension module by
> running the following two commands:
>
> python setup.py build
> python setup.py install
>
>
> #1
>
>
> Microsoft Windows [Version 6.1.7600]
>
> Copyright (c) 2009 Microsoft Corporation. All rights reserved.
>
>
>> c:\Python31\Lib\finance>python setup.py build
>
> running build
>
> running build_ext
>
> building 'finance' extension
>
> creating build
>
> creating build\temp.win-amd64-3.1
>
> creating build\temp.win-amd64-3.1\Release
>
> C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python31\include
>> -IC:\Pytho
>
> n31\PC -c finance.c -o build\temp.win-amd64-3.1\Release\finance.o
>
> finance.c: In function `PyInit_finance':
>
> finance.c:31: warning: implicit declaration of function `Py_Module_Create'
>
> finance.c:31: warning: return makes pointer from integer without a cast
>
> writing build\temp.win-amd64-3.1\Release\finance.def
>
> creating build\lib.win-amd64-3.1
>
> C:\MinGW\bin\gcc.exe -mno-cygwin -shared -s
>> build\temp.win-amd64-3.1\Release\fin
>
> ance.o build\temp.win-amd64-3.1\Release\finance.def -LC:\Python31\libs
>> -LC:\Pyth
>
> on31\PCbuild\amd64 -lpython31 -lmsvcr90 -o
>> build\lib.win-amd64-3.1\finance.pyd
>
> build\temp.win-amd64-3.1\Release\finance.o:finance.c:(.text+0x2b): undefined
>> ref
>
> erence to `_imp__PyArg_ParseTuple'
>
> build\temp.win-amd64-3.1\Release\finance.o:finance.c:(.text+0x5c): undefined
>> ref
>
> erence to `_imp__Py_BuildValue'
>
> build\temp.win-amd64-3.1\Release\finance.o:finance.c:(.text+0x74): undefined
>> ref
>
> erence to `Py_Module_Create'
>
> collect2: ld returned 1 exit status
>
> error: command 'gcc' failed with exit status 1
>
>
>> c:\Python31\Lib\finance>
>
>
>
> #2
>
>
> from distutils.core import setup, Extension
>
>
>> setup(name = "finance",
>
> version = "1.0",
>
> ext_modules = [Extension("finance", ["finance.c"])])
>
>
>
> #3
>
> #include<Python.h>
>
> #include<math.h>
>
>
>> static PyObject *
>
> pdv(PyObject *self, PyObject *args)
>
> {
>
> double value, rate, timex, denom, pdvx;
>
> if (!PyArg_ParseTuple(args, "ddd",&value,&rate,&timex))
>
> return NULL;
>
> denom = (double) pow ((1 + rate), (timex));
>
> pdvx = value / denom;
>
> return Py_BuildValue("d", pdvx);
>
> }
>
> PyMethodDef pdvMethods[] = {
>
> {"pdv", pdv, METH_VARARGS, "Returns the Present Discounted Value given
>> of a single future value"},
>
> {NULL, NULL, 0, NULL}
>
> };
>
>
>> static struct PyModuleDef financemodule = {
>
> PyModuleDef_HEAD_INIT,
>
> "finance", /* name of module */
>
> NULL, /* module documentation, may be NULL */
>
> -1, /* size of per-interpreter state of the module,
>
> or -1 if the module keeps state in global variables. */
>
> pdvMethods
>
> };
>
>
>> PyMODINIT_FUNC
>
> PyInit_finance(void)
>
> {
>
> return Py_Module_Create(&financemodule);
>
> }
>
>
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list