-
Notifications
You must be signed in to change notification settings - Fork 1
/
README.windows
100 lines (75 loc) · 4.18 KB
/
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
=head1 INSTALLATION - Windows VC 8.0 details
Installation of the MQSeries module normnally requires the steps
perl Makefile.PL
make
make test
make install
However, if you are using Visual C++ 8.0 (Visual Studio 2005 or
later), while your version of perl was built with an earlier release
of Visual C++, you may need to perform additional tasks after the
"make" step. The symptoms you'll see is that, when perl tries to load
the MQSeries DLL, it cannot find the C runtime library, MSVCR80.dll.
=head2 Background
When you build an application or DLL with Microsoft VC 8.0 you require
the C runtime library, MSVCR80.dll.
With previous releases of Visual C++ the corresponding DLL would
either be added to the search path or installed in
C:\windows\system32. Visual C++ 8.0 supports multiple versions of
these libraries and no longer allows you to add them to the search
path; instead, the libraries are installed in the Side-by-Side (SxS)
directory and accessed by their UUID.
dir C:\WINDOWS\WinSxS
Volume in drive C has no label.
Volume Serial Number is 64C5-B42B
Directory of C:\WINDOWS\WinSxS
11/01/2008 22:24 <DIR> .
11/01/2008 22:24 <DIR> ..
08/10/2007 19:23 <DIR> InstallTemp
11/01/2008 22:24 <DIR> Manifests
08/10/2007 18:49 <DIR> Policies
08/10/2007 18:49 <DIR> x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_6e805841
10/10/2007 08:50 <DIR> x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_cbb27474
08/10/2007 18:49 <DIR> x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd
10/10/2007 08:50 <DIR> x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700
08/10/2007 18:49 <DIR> x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_3415f6d0
10/10/2007 08:50 <DIR> x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_91481303
08/10/2007 18:49 <DIR> x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_dec6ddd2
10/10/2007 08:50 <DIR> x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_3bf8fa05
If you look in one of these directories, you'll see the DLL:
dir C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd
Volume in drive C has no label.
Volume Serial Number is 64C5-B42B
Directory of C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd
08/10/2007 18:49 <DIR> .
08/10/2007 18:49 <DIR> ..
22/09/2005 22:48 479,232 msvcm80.dll
22/09/2005 22:48 548,864 msvcp80.dll
22/09/2005 22:48 626,688 msvcr80.dll
=head2 Making the MQSeries DLL work
Adding the relevant SxS directory to the search path won't help - the
program loader will not load the MQSeries DLL. The only way to access
the versioned MSVCR80.DLL is by creating a manifest file.
The manifest file must be called MQSeries.dll.manifest and have a
content like the one below (you will have to adjust the UUID to match
your system):
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>
We have had reports that the manifest file can be stored in the same
directory as the perl binary or the same directory as the MQSeries
DLL, but ideally it should be embedded into the MQSeries DLL.
This latter step is performed using C<mt.exe>:
http://msdn2.microsoft.com/en-us/library/ms235591(VS.80).aspx
=head2 Finally
These manifest issues only occur when both Visual C++ 8 and an earlier
release are used to build different components of your system. If
both perl and the MQSeries package are compiled with either Visual C++
8 or an earlier release, you will not have any issue; but if perl
itself is built using Visual C++ 7 and you try to build the MQSeries
extension using Visual C++ 8, then you have to create the manifest
file and embed it into MQSeries.dll using C<mt.exe>.