VC++-Extension in Debug-Mode

Greg Landrum glandrum at my-deja.com
Tue Nov 21 10:06:42 EST 2000


In article <8vdh9k$509$1 at nnrp1.deja.com>,
  sentinel101 at my-deja.com wrote:
> I've problems with an extension written in VC++ and compiled & linked
in
> Debug mode. I got the debug libs from the BeOpen-Website and
everything
> seemed to work fine until I imported the module.
>
> The standard Python interpreter just crashed immediately after
displaying the
> message "Fatal Python error: Interpreter not initialized (version
> mismatch?)". The debug version of Python simply says "ImportError: No
module
> named XXX". The crash seems to happen in Python20_d.dll
(modsupport.c),
> probably in function Py_InitModule4TraceRefs. Can I circumvent this by
> undefining Py_TRACE_REFS which I found in modsupport.h ? Any idea ?
>

The simplest explanation for this is that you have forgotten to append
an _d to the name of your debug extension dll, i.e. your mod.dll should
be called mod_d.dll when you build in Debug mode. Under Windows, you
have to do this.  When you are running the debug version of python,
it can't find mod_d.dll so you get an error.  When you are running
the "normal" version of python, which uses python20.dll, you get
mod.dll imported, but it comes along with python20_d.dll.  The net
result of having different versions of the same dll imported is
unhappiness.

The real fun starts if you use a number of other extension modules and
you need to make sure that you have up-to-date, accessible versions of
all of them in both Release and Debug forms.

Welcome to Windows Debug Hell (TM).

-greg


Sent via Deja.com http://www.deja.com/
Before you buy.



More information about the Python-list mailing list