Project:
DBD::ODBC
Code Location:
http://svn.perl.org/modules/dbd-odbc/trunk/dbd-odbc/trunk
/
README.windows
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
$Id: README.windows 15416 2012-10-03 17:33:00Z mjevans $ Building DBD::ODBC on Windows ============================= Quick hints: 1. Make sure when you run "perl Makefile.PL" that you specify which make you are using (dmake, nmake). You do this with: perl Makefile.PL MAKE=nmake If you don't, ExtUtils::MakeMaker will generate the Makefile for the default make which may not be the one you are going to use and this will lead to make errors. 2. I've had a number of reports that attempting to build with Borland's make does not work. If that happens to you please don't tell me; get nmake or dmake. 3. If you are not interested in Unicode support disable it as Unicode support is built in by default on Windows builds. You can disable it with -nou as in: perl Makefile.PL -nou 4. If you are manually attempting to build DBD::ODBC for use with ActiveState Perl (ActivePerl) don't. You can use cpan like this: cpan M/MJ/MJEVANS/DBD-ODBC-1.23_4.tar.gz If you don't have Microsoft VC on your PATH, then this will download and install MinGW for you (inside the Perl tree) and use that instead. This should work for the latest builds of all major Perl versions, 5.8.9.827, 5.10.1.1007 and 5.12.0.1200. On older versions you may need to install MinGW with PPM "by-hand" first: ppm install MinGW cpan M/MJ/MJEVANS/DBD-ODBC-1.23_4.tar.gz On ActivePerl 5.8.8 and earlier you will have to download, install and configure MinGW and dmake manually though, so you may not want to bother... 5. With Strawberry Perl you can install DBD::ODBC from cpan as normal - see below. 64bit Windows ============= I have built DBD::ODBC on win64 and the tests to SQL Server completed successfully. However, you will need at least version 1.15 if you want to run DBD::ODBC on win64 successfully. If you are running a 32bit Perl on a 64bit Windows machine you will need to be aware there are two ODBC administrators and you need to create your DSNs with the right one. The ODBC Administrator you get to from Control Panel, Administrative Tools, Data Sources is the 64bit one and data sources created here will not be visible or useable from 32bit applications. The ODBC administrator you need to use for 32bit applications can be found at X:\windows\syswow64\odbcad32.exe. Strawberry Perl =============== If you attempt to install DBD::ODBC with: cpan -i DBD::ODBC cpan in strawberry perl adds INC to the command line and that overrides what MakeMaker attempts to add to INC. As a result, the build will probably be missing the include path for the DBIXS.h module. See http://rt.cpan.org/Public/Bug/Display.html?id=32811. Since DBD::ODBC 1.17_2 I believe we have a workaround in the Makefile.PL that stops this happening and in later Strawberry Perl versions the problem is fixed. Reported issues and workarounds =============================== Missing SQLLEN/SQLULEN definitions ================================== MS changed the ODBC header files and introduced SQLLEN/SQLULEN types which are required to build on 64 bit platforms so DBD::ODBC now needs them. If you find you are missing definitions for SQLLEN/SQLULEN you need updated header files. See the DBD::ODBC FAQ for where you can find them. Visual Studio 6.0 and SDK Feb 2003 ================================== It has been reported to me that there are problems building DBD::ODBC with VS 6 on some setups (thanks to JHF Remmelzwaal for the following example and workaround). Initially an nmake failed with: C:\Program Files\Microsoft SDK\Include\.\windows.h(157) : fatal error C1083: Cannot open include file: 'excpt.h': No such file or directory This was solved by: set PASTHRU_INC=-I"c:\Program Files\Microsoft SDK\include" -I"c:\Program Files\Microsoft Visual Studio\VC98\include" which led to: ODBC.obj : error LNK2001: unresolved external symbol __fltused dbdimp.obj : error LNK2001: unresolved external symbol __fltused unicode_helper.obj : error LNK2001: unresolved external symbol __fltused ODBC.obj : error LNK2001: unresolved external symbol __imp__sprintf dbdimp.obj : error LNK2001: unresolved external symbol __imp__sprintf ODBC.obj : error LNK2001: unresolved external symbol _strcpy dbdimp.obj : error LNK2001: unresolved external symbol _strcpy dbdimp.obj : error LNK2001: unresolved external symbol __imp__strncmp dbdimp.obj : error LNK2001: unresolved external symbol __imp__toupper dbdimp.obj : error LNK2001: unresolved external symbol __imp__strncpy dbdimp.obj : error LNK2001: unresolved external symbol __imp__strstr dbdimp.obj : error LNK2001: unresolved external symbol _memcpy dbdimp.obj : error LNK2001: unresolved external symbol _memset dbdimp.obj : error LNK2001: unresolved external symbol _strlen unicode_helper.obj : error LNK2001: unresolved external symbol _strlen dbdimp.obj : error LNK2001: unresolved external symbol _strcmp dbdimp.obj : error LNK2001: unresolved external symbol _strcat dbdimp.obj : error LNK2001: unresolved external symbol __imp__atoi dbdimp.obj : error LNK2001: unresolved external symbol _abs dbdimp.obj : error LNK2001: unresolved external symbol __imp___pctype dbdimp.obj : error LNK2001: unresolved external symbol __imp___isctype dbdimp.obj : error LNK2001: unresolved external symbol __imp____mb_cur_max dbdimp.obj : error LNK2001: unresolved external symbol __imp__strchr unicode_helper.obj : error LNK2001: unresolved external symbol __imp__wcslen LINK : error LNK2001: unresolved external symbol __DllMainCRTStartup@12 blib\arch\auto\DBD\ODBC\ODBC.dll : fatal error LNK1120: 20 unresolved externals NMAKE : fatal error U1077: 'link' : return code '0x460' which was resolved by adding c:\Program Files\Microsoft Visual Studio\VC98\Lib\MSVCRTD.LIB" to end of LDLOADLIBS in the Makefile.
