Gerhard Haering <[EMAIL PROTECTED]> writes: > Hello, > > I used to build Python extension modules with mingw. Now, Python has > switched to the MSVCR71 runtime with version 2.4, and I thought mingw > has support for this. But I get problems with symbols being referenced > from the wrong DLLs. > > You can see the problem by compiling this: > > ################## > #include <string.h> > > int main() > { > char* s; > int i; > > > for (i = 0; i < 10; i++) { > s = strdup("foo"); > free(s); > } > > return 0; > } > ################## > > with gcc x.c -lmsvcr71 > > Then if you run a.exe it crashes. > > If you use depends.exe on it, you see that it resolves strdup() via > msvcrt, but the rest with msvcr71.dll. That's why strdup() is using > the one malloc, but free() a different free() from the other DLL, > which is undoubtedly the reason for the crash. > > Is there any way I can force mingw to not link in msvcr for things > like strdup?
Only guesswork, but replacing this section in the lib\gcc-lib\mingw32\3.2.3\specs file (I can only guess wht this file does) *libgcc: %{mthreads:-lmingwthrd} -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt with this one: *libgcc: %{mthreads:-lmingwthrd} -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcr71 seemed to do the trick. Thomas -- http://mail.python.org/mailman/listinfo/python-list