Undefined calling conventions in Python.h

Ben Sizer kylotan at gmail.com
Wed Jul 23 14:08:58 CEST 2008

On Jul 23, 11:43 am, Jaco Naude <naude.j... at gmail.com> wrote:
> What Visual C++ is doing is that it is looking for mangled names since
> it does not know the DLL contains C functions. I've managed to work
> around this by declaring the Python functions as follows before using
> them in the C++ application side:
> extern "C"
> {
>     void Py_Initialize(void);
> }

You should put the extern block around the #include <python.h> call
rather than individual functions, as surely the C calling convention
should apply to everything within.

> It is probably more of a C++ question it turns out, but I would think
> that someone in the Python group would use the Python DLL in C++.

More of a Visual C++ question specifically, since the __clrcall prefix
is a MS specific extension (http://msdn.microsoft.com/en-us/library/
ec7sfckb(VS.80).aspx). If you're not using managed code in your app,
disable it in the project/build options. If you are, then perhaps you
just need to specify that you're not with this DLL, though I've never
had to deal with anything like that myself.

Ben Sizer

More information about the Python-list mailing list