-
Notifications
You must be signed in to change notification settings - Fork 5
/
setup_vc.txt
260 lines (231 loc) · 13.7 KB
/
setup_vc.txt
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
How to setup Visual C++ to compile PinMAME (all flavours)
=========================================================
ToDo: ISO C99 and C90 issues (msc.h include), VS2008 is currently used by developmen team, but batch scripts and infos are available for older VS versions
----------
Info links
----------
The MAME development homepage is available at http://www.mamedev.org/
The Visual C++ homepage is available at http://msdn.microsoft.com/visualc/
Old versions are listed at http://msdn.microsoft.com/visualc/aa336447.aspx
Information about the VC++ macro _MSC_VER is available at
http://support.microsoft.com/kb/65472
http://msdn.microsoft.com/library/b0084kay(VS.71).aspx
TechNet Security Updates are available at http://www.microsoft.com/technet/security/current.aspx
The Visual Studio documentation is available at http://msdn.microsoft.com/library/aa187916.aspx
VS6 documentation is only available in english languages (as of 2008-07)
The NASM homepage is available at http://www.nasm.us/
The ZLib homepage is available at http://www.zlib.net/
Additional DirectX information is available at http://www.toymaker.info/Games/html/directx_9_0c.html
-------
General
-------
To use a Visual C++ version for compiling the following is necessary:
- Latest service pack for Visual Studio or Visual C++
- Compatible Windows Platform SDK
- Compatible DirectX SDK (with DirectInput 7)
- Optionally a compatible MSDN Library
or a free MSDN Lib
MSDN Library für Visual Studio 2008 SP1 (April 2009)
http://www.microsoft.com/downloads/details.aspx?FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373
Unfortunately Microsoft removed several files for Visual Studio 6.0 in 2009.
Additionally the following is necessary:
- NASM compiler for the assembler parts
a) Download the assembler compiler NASM 2.0 for Win32 to a download directory.
Binary package:
* nasm-2.02-win32 (later versions should work too)
Get it from http://www.nasm.us/pub/nasm/releasebuilds/
b) Extract NASM into a separate directory, for example c:\nasm
Note: If an older NASM Win32 package is used (<0.99.4), then rename the
executables to "nasm.exe" and "ndisasm.exe" by removing the W letter.
c) Add this directory to the bin directories of Visual C++.
--------------
Visual C++ 6.0 (1998, _MSC_VER = 1200)
--------------
- Microsoft Java Virtual Machine
For installing Visual Studio 6.0 and its service packs the Microsoft Java
Virtual Machine (MSJVM) is needed. It is recommended to install one of the
latest versions (3809 or 3810) first to avoid computer restarts while
installing the service packs.
As the Microsoft Java Virtual Machine is outdated and insecure it is also
recommended to deinstall it after installation of all service packs. For this
Microsoft provided the tool UNMSJVM.EXE.
Unfortunately the files are nomore available at Microsoft's homepage, but they
are all available for download at MDGx homepage:
http://www.mdgx.com/add.htm#JVM
More information about MSJVM is available at Mark Salloway's Windows Resource
Center and Virtualmachine:
http://www.mvps.org/marksxp/WindowsXP/java.php
http://www.xs4all.nl/~smuller/VMSite2/
- Service Packs & Processor Pack
Service Pack 5 is needed to update all components of Visual Studio 6.0, the
Processor Pack for getting MASM and Service Pack 6 for the latest updates of
Visual C++ and Visual Basic.
a) Download SP5, the Processor Pack and SP6
Update Homepage: (non-functional) http://msdn.microsoft.com/visualc/aa336441.aspx
6.0 SP5: (non-functional) http://msdn.microsoft.com/en-us/vstudio/aa718363.aspx
(non-functional) http://www.microsoft.com/downloads/details.aspx?familyid=e9411283-c8ad-4283-8d74-3d6efd917644
(seems that Microsoft has removed Service Pack 5 although it is needed for the Processor Pack)
http://ftp.maddes.net/vs6/
6.0 PP: http://msdn.microsoft.com/en-us/vstudio/aa718349.aspx
http://www.infinitefactors.org/jonk/pctools.html
6.0 SP6: http://msdn.microsoft.com/en-us/vstudio/aa718364.aspx
http://www.microsoft.com/downloads/details.aspx?familyid=a8494edb-2e89-4676-a16a-5c5477cb9713
b) Install SP5, then the Processor Pack and at last SP6
The Processor Pack only installs on SP5, so it is recommended to apply SP5
first, then the Processor Pack and finally SP6:
http://support.microsoft.com/kb/872907
If SP6 is already installed, but you forgot to apply SP5 before and use
several other components of Visual Studio too, then it is recommended to do
a re-installation of Visual Studio.
- Windows Platform SDK
For PinMAME use the SDK coming with Visual C++ 6.0, due to the following ATL
issue with newer versions: http://support.microsoft.com/kb/243298/en-us
- DirectX SDK Summer 2003 Edition
(folders: utilities, include, lib)
(non-functional) http://www.microsoft.com/downloads/details.aspx?familyid=9216652f-51e0-402e-b7b5-feb68d00f298
(seems that Microsoft has removed it for whatever reason)
http://ftp.maddes.net/dxsdk/summer2003/dx90updatesdk.exe
- Last MSDN Library with Visual Studio 6.0 information/integration was October 2001.
- Project Files (.dsp) are maintained in the repository.
- A template for the Workspace file is also inside the repository (PinMAME_VC60.dsw.tmpl).
- Setting env vars:
"%ProgramFiles%\Microsoft Visual Studio\VC98\Bin\vcvars32.bat"
---------------
Visual C++ 2002 (7.0, _MSC_VER = 1300, ".NET")
Visual C++ 2003 (7.1, _MSC_VER = 1310)
---------------
- Service Packs
2002 SP1: http://www.microsoft.com/downloads/results.aspx?categoryid=10&freetext=visual+studio+2002+SP&sortCriteria=date
2003 SP1: http://www.microsoft.com/downloads/results.aspx?categoryid=10&freetext=visual+studio+2003+SP&sortCriteria=date
- Windows Platform SDK for Windows Server 2003 R2 from March 2006
(folders: bin\winnt, bin, include, lib)
http://www.microsoft.com/downloads/details.aspx?familyid=E15438AC-60BE-41BD-AA14-7F1E0F19CA0D
- Last DirectX SDK with DirectInput 7, and therefore working with the PinMAME
source code, is August 2007.
(folders: $(DXSDK_DIR)utilities\bin\x86, $(DXSDK_DIR)include, $(DXSDK_DIR)lib\x86)
http://www.microsoft.com/downloads/details.aspx?familyid=529f03be-1339-48c4-bd5a-8506e5acf571
- Last MSDN Library with Visual Studio 2002 information/integration was
January 2003, but January 2006 should work too.
- Last MSDN Library with Visual Studio 2003 information/integration was
January 2006.
- Project Files (.vcproj) for VC2002 are maintained in the repository
As the VC2003 format is the same as VC2002 (except for the version nummber)
just create a copy of each VC2002 project files and rename them to VC2003.
Then replace all occurrences of VC2002 in them with VC2003.
Finally convert them with VC2003.
A batch file is provided to assist you with the copying.
- Migration info is available at http://msdn.microsoft.com/visualc/aa336429.aspx
- Setting env vars:
2002: "%ProgramFiles%\Microsoft Visual Studio .NET\VC7\bin\vcvars32.bat"
2003: "%ProgramFiles%\Microsoft Visual Studio .NET 2003\VC7\bin\vcvars32.bat"
---------------
Visual C++ 2005 (8.0, _MSC_VER = 1400)
Visual C++ 2008 (9.0, _MSC_VER = 1500)
---------------
- Service Packs
2005 SP1 (not Foundation): http://www.microsoft.com/downloads/results.aspx?categoryid=10&freetext=visual+studio+2005+SP&sortCriteria=date
2008 SP1: http://www.microsoft.com/downloads/results.aspx?categoryid=10&freetext=visual+studio+2008+service+pack&sortCriteria=date
Slipstreaming VS service packs: http://blogs.msdn.com/heaths/archive/2006/12/16/slipstreaming-visual-studio-2005-service-pack-1.aspx
- Windows [Platform] SDK for Windows Server 2008 and .NET Framework 3.5 from March 2008
(folders: bin, include, include\gl, lib)
http://www.microsoft.com/downloads/details.aspx?familyid=f26b1aa4-741a-433a-9be5-fa919850bdbf
http://www.microsoft.com/downloads/results.aspx?freetext=Windows+SDK&sortCriteria=date
- Last DirectX SDK with DirectInput 7, and therefore working with the PinMAME
source code, is August 2007.
(folders: $(DXSDK_DIR)utilities\bin\x86, $(DXSDK_DIR)include, $(DXSDK_DIR)lib\x86)
http://www.microsoft.com/downloads/details.aspx?familyid=529f03be-1339-48c4-bd5a-8506e5acf571
- Current MSDN Library works with both versions.
First MSDN Library with Visual Studio 2005 information/integration was April 2006.
- Project Files (.vcproj)
As the VC2005/2008 format is similar to VC2002 just create a copy of each
VC2002 project file and rename them to VC2005 or VC2008.
Then replace all occurrences of VC2002 in them with VC2005 or VC2008 respectively.
Finally convert them with VC2005 or VC2008.
Add _CRT_SECURE_NO_WARNINGS to the C/C++ preprocessor definitions in all builds.
A batch file is provided to assist you with the copying.
- Migration info is available at http://msdn.microsoft.com/visualc/aa336429.aspx
- Info about new security enhancments and possible optimisations:
http://msdn.microsoft.com/library/8ef0s5kh.aspx
(non-functional) http://www.themssforum.com/VC/optimization-Express/
- Setting env vars:
2005: "%ProgramFiles%\Microsoft Visual Studio 8\VC\vcvarsall.bat"
2008: "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
Additional notes on Express Editions:
- Both (2005 & 2008) work fine without any changes and can compile PinMAME and PinMAME32
http://www.microsoft.com/express/
VS 2008 SP1 Express: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3254c868-bcb9-412c-95c6-d100c872ec60
- The Express Editions are lacking the resource editors and also support for ATL
and MFC projects. VPinMAME is an ATL DLL project (Release = MinDependency) and
therefore not compilable with a normal Express Edition setup.
http://msdn.microsoft.com/library/hs24szh9.aspx
- Through investigations we found out that it is possible to compile VPinMAME
with the Visual C++ 2008 Express Edition by using a "trick":
Install the 90-day Trial Version of Visual C++ 2008 *and* the Express Edition.
With the trial version you get all the ATL and MFC includes plus libraries.
The Express Edition still contains all the configuration settings to use these.
This way you can compile existing ATL and MFC projects, but you can not create
a new ATL or MFC project as the corresponding wizard definitions are missing
in the Express Edition.
Btw this "trick" failed with the Express Edition of VisualC++ 2005.
http://msdn.microsoft.com/evalcenter/
http://technet.microsoft.com/evalcenter/
http://www.microsoft.com/downloads/results.aspx?freetext=visual+studio+trial&sortCriteria=date
Trial 2008: http://www.microsoft.com/downloads/details.aspx?FamilyID=83c3a1ec-ed72-4a79-8961-25635db0192b
http://ftp.maddes.net/vs2008/
- Setting env vars:
2005: "%ProgramFiles%\Microsoft Visual Studio 8\VC\vcvarsall.bat"
2008: "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
Known Issues:
- Error when compiling PinMAME32 debug builds with VC++ 2005 or 2008
"CVTRES : fatal error CVT1100: duplicate resource. type:MANIFEST, name:1, language:0x0409"
---------------
Visual C++ 2010 (10.0, _MSC_VER = 1600)
---------------
WIP
Difference between MSDN release and trial ISOs is only the product key in "Setup\setup.sdb", and somtimes depending on the language the DVD name.
So the trial ISO has the full retail content and can be unlimited with a key.
http://blogs.msdn.com/b/vcblog/archive/2009/05/20/using-the-windows-7-rc-sdk-in-visual-c-2010-beta-1.aspx
http://blogs.msdn.com/b/chuckw/archive/2010/06/15/windows-sdk-7-1.aspx
Trial 2010: http://www.microsoft.com/downloads/details.aspx?FamilyID=5414e4c0-c1f8-473e-8e9d-a1a7be786141
2010-05-19 / Windows SDK for Windows 7 and .NET Framework 4: http://www.microsoft.com/downloads/details.aspx?FamilyID=35aeda01-421d-4ba5-b44b-543dc8c33a20
2009-08-14 / Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: http://www.microsoft.com/downloads/details.aspx?familyid=71DEB800-C591-4F97-A900-BEA146E4FAE1
-----------
Compilation
-----------
- Directly load a project file (*.dsp or .vcproj), choose between Release or
Debug build and then compile.
----------------
Virtual Machines (or placing intermediate files somewhere else)
----------------
The project files for VC++ 2002 (and later) allow to place the intermediate
files into a separate location. This can be very useful if you get the error
"fatal error C1090: PDB API call failed, error code '23'", which can happen
quite a lot in virtual machines with shared folders.
To use a different location just set the environment variable VS_OUTPUT to the
desired location plus a backslash. A trailing backslash is MANDATORY if you use it!!!
If you set or changed the environment variable while Visual Studio was running,
then you have to exit and restart Visual Studio for the change to take effect.
If the environment variable VS_OUTPUT is not set or empty, then the OBJ folder
will be inside the project folder as usual.
-------------------
Addendum: Libraries
-------------------
- The ZLib library for Visual C++ 6.0 is already included in the CVS repository.
If you want to compile it yourself then get the following package:
a) ZLib source code
* zlib-1.1.4.tar.gz
Get it from http://sourceforge.net/projects/libpng/files/zlib/1.1.4/
Note: Newer versions of ZLib work too (currently 1.2.3).
b) If you want to test the assembler optimised version you also need MASM from
Microsoft. You can use it for free, but not for commercial use.
Get the Processor Pack for Visual C++ 6.0:
* http://msdn.microsoft.com/en-us/vstudio/aa718349.aspx
* http://www.infinitefactors.org/jonk/pctools.html
Extract it to a temporary directory, for example c:\masm, copy the
following files into a separate directory and add it to the bin directories
of Visual C++:
* H2INC.ERR
* H2INC.EXE
* ML.ERR
* ML.EXE
* MASMREF.DOC