I google around and found some old articles, from them the one that seems more accurate is http://www.vrplumber.com/programming/mstoolkit/
of couse I had to difer from that a little so this is what I have install
- Microsoft Windows Platform SDK Collection for Windows Server 2003 SP1
- Microsoft Visual Studio 2005 Version 8.0.50727.42 (RTM.050727-4200) thats Microsoft Visual C++ 2005
- Microsoft .NET framework SDK 1.1
- Microsoft .NET Framework Version
2.0.50727
On the other part I have
- Python 2.4.2
- mysql-4.1.18-win32.zip
- mysqlpython 1.2.0, 1.2.1 and 1.2.1_p2
Changes to the sources
-
I apply the patch posted on the website, for disutils http://www.vrplumber.com/programming/mstoolkit/msvccompiler.patch
- I commented out the code related to version in _mysql.c ( wont give the line numbers cause they differ from file to file.
PyRun_String(version_info, Py_eval_input,
dict, dict)))
goto error;
if (PyDict_SetItemString(dict, "__version__",
PyString_FromString(__version_
_)))
goto error;*/
goto error;*/
- I copy over the file my_config.h from the mysql sources (because it's NOT distributed with the installer)
- and finally I edit site.cfg to this, the rest of the file is not changed.
mysqlroot: C:\mysql
library_dirs: %(mysqlroot)s\lib\opt
include_dirs: %(mysqlroot)s\include
libraries: mysqlclient zlib libcmt wsock32 advapi32
# libcmt msvcrt
#extra_compile_args:
#extra_objects:
- I started the "Visual Studio 2005 Command Prompt"
- and setup.py build
- So far I belive I have compile a working copy of the code but i'm stuck at the linker
libraries: mysqlclient zlib msvcrt libcmt wsock32 advapi32
libs msvcrt libcmt seems to conflict with eachother and with MSVCR80.dll
I have try using msvcrt and have /NODEFAULTLIB:libcrt
C:\MySQL-python-1.2.1_p2.tar\MySQL-python-1.2.1_p2>"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.exe" /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\mysql\lib\opt /LIBPATH:c:\python24\libs /LIBPATH:c:\python24\PCBuild mysqlclient.lib zlib.lib msvcrt.lib wsock32.lib advapi32.lib /EXPORT:init_mysql build\temp.win32-2.4\Release\_mysql.obj /OUT:build\lib.win32-2.4\_mysql.pyd /IMPLIB:build\temp.win32-2.4\Release\_mysql.lib /NODEFAULTLIB:libcrt
LIBCMT.lib(crtheap.obj) : error LNK2005: __malloc_crt already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(fflush.obj) : error LNK2005: _fflush already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(dosmap.obj) : error LNK2005: __errno already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(calloc.obj) : error LNK2005: _calloc already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(realloc.obj) : error LNK2005: _realloc already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(crt0init.obj ) : error LNK2005: ___xi_a already defined in msvcrt.lib(cinitexe.obj)
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in msvcrt.lib (cinitexe.obj)
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in msvcrt.libcinitexe.obj)
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in msvcrt.lib(cinitexe.obj)
LIBCMT.lib(winxfltr.obj) : error LNK2005: ___CppXcptFilter already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(winsig.obj) : error LNK2005: _signal already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(tidtable.obj) : error LNK2005: __encode_pointer already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(tidtable.obj ) : error LNK2005: __encoded_null already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(tidtable.obj) : error LNK2005: __decode_pointer already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(mlock.obj) : error LNK2005: __unlock already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(mlock.obj) : error LNK2005: __lock already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(setlocal.obj) : error LNK2005: _setlocale already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(tzset.obj) : error LNK2005: __tzset already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(_ctype.obj) : error LNK2005: _isspace already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(_ctype.obj) : error LNK2005: _iscntrl already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(atox.obj) : error LNK2005: _atoi already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(getenv.obj) : error LNK2005: _getenv already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(strtol.obj) : error LNK2005: _strtol already defined in msvcrt.lib(MSVCR80.dll)
LIBCMT.lib(strtol.obj) : error LNK2005: _strtoul already defined in msvcrt.lib(MSVCR80.dll)
Creating library build\temp.win32-2.4\Release\_mysql.lib and object build\temp.win32-2.4\Release\_mysql.exp
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
build\lib.win32-2.4\_mysql.pyd : fatal error LNK1120: 1 unresolved externals
I have try using libcmt and have /NODEFAULTLIB:msvcrt
C:\MySQL-python-1.2.1_p2.tar\MySQL-python-1.2.1_p2>"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.exe" /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\mysql\l ib\opt /LIBPATH:c:\python24\libs /LIBPATH:c:\python24\PCBuild mysqlclient.lib zlib.lib libcmt.lib wsock32.lib advapi32.lib /EXPORT:init_mysql build\temp.win32-2 .4\Release\_mysql.obj /OUT:build\lib.win32-2.4\_mysql.pyd /IMPLIB:build\temp.win32-2.4\Release\_mysql.lib /NODEFAULTLIB:msvcrt
Creating library build\temp.win32-2.4\Release\_mysql.lib and object build\temp.win32-2.4\Release\_mysql.exp
_mysql.obj : warning LNK4217: locally defined symbol _sprintf imported in function __mysql_ConnectionObject_repr
_mysql.obj : error LNK2019: unresolved external symbol __imp__strncat referenced in function __mysql_row_to_dict
_mysql.obj : error LNK2019: unresolved external symbol __imp__strncpy referenced in function __mysql_row_to_dict
build\lib.win32-2.4\_mysql.pyd : fatal error LNK1120: 2 unresolved externals
And I have also try using none. of them, please note this is the same as the above
C:\MySQL-python-1.2.1_p2.tar\MySQL-python-1.2.1_p2>"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.exe" /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\mysql\lib\opt /LIBPATH:c:\python24\libs /LIBPATH:c:\python24\PCBuild mysqlclient.lib zlib.lib wsock32.lib advapi32.lib /EXPORT:init_mysql build\temp.win32-2.4\Release\_mysql.obj /OUT:build\lib.win32-2.4\_mysql.pyd /IMPLIB:build\temp.win32-2.4\Release\_mysql.lib /NODEFAULTLIB:msvcrt /NODEFAULTLIB:libcrt
Creating library build\temp.win32-2.4\Release\_mysql.lib and object build\temp.win32-2.4\Release\_mysql.exp
_mysql.obj : warning LNK4217: locally defined symbol _sprintf imported in function __mysql_ConnectionObject_repr
_mysql.obj : error LNK2019: unresolved external symbol __imp__strncat referenced in function __mysql_row_to_dict
_mysql.obj : error LNK2019: unresolved external symbol __imp__strncpy referenced in function __mysql_row_to_dict
build\lib.win32-2.4\_mysql.pyd : fatal error LNK1120: 2 unresolved externals
now the weird thing is that i'm missing some very common functions I even try adding
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <stdlib.h>
to the mysql.c file and they are still missing.
my site.cfg mysql section is
[compiler]
mysql_root: C:\mysql
library_dirs: %(mysql_root)s\lib\opt
include_dirs: %(mysql_root)s\include
libraries: mysqlclient zlib libcmt wsock32 advapi32
# libcmt msvcrt
#extra_compile_args:
#extra_objects:
I have also notice I have multiple versions of libcmt.lib and msvcrt.lib
one in C:\Program Files\Microsoft Visual Studio 8\VC\lib and another in C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib
I have try with both and still having the same error.
sorry for the long message but it's a complex problem so it needs big files:)
any ideas?
-- http://mail.python.org/mailman/listinfo/python-list