We're now a non-profit! Support open source packet analysis by making a donation.

Wireshark-dev: Re: [Wireshark-dev] Wireshark v1.7.0 build issue with MSVC 2005

From: Graham Bloice <[email protected]>
Date: Thu, 14 Jul 2011 13:10:49 +0100
On 14/07/2011 12:38, wsgd wrote:
Le 14/07/2011 11:39, Graham Bloice a écrit :
On 14/07/2011 05:10, Pradip Biswas wrote:

From: wsgd <[email protected]>
To: Developer support list for Wireshark <[email protected]>
Sent: Thu, July 14, 2011 2:40:15 AM
Subject: Re: [Wireshark-dev] Wireshark v1.7.0 build issue with MSVC 2005

Le 13/07/2011 20:21, Pradip Biswas a écrit :
I tried building the latest 1.7.0 code on WinXP (32-bit) and Win7 (64-bit) both having MSVC 2005. I am stuck with the error "'ml': is not recognized as an internal or external command, operable program or batch file" almost at the beginning of "nmake -f Makefile.nmake all."
Producing 64 bits version should require ml64.exe.
If you have this error on your Win7 64 bits,
 I think you did not call something like "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat",
 and so, you are going to produce 32 bits version.

[PB]: Ok. I am fine with 32-bit build. But the build failed on WinXP 32bit with the same MSVC 2005 producing the same ml error.

Do I need to do something special to get past this issue? I searched for ml.exe in the MSVC installation folder, I did not find anything there. Though there is a file called ml64.exe. I have not installed either the VC run-time Redistributable package nor the PSDK. Do I need any of those?
PSDK was needed for me on Win7 64bits with MSVC 2008 EE (to have ml64.exe).
ml64.exe is supposed to be included in the not EE version of MSVC 2008.

Even after installing PSDK (from : http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=3138),
 I have no ml.exe or ml64.exe into my installation of MSVC 2005 EE.

[PB]: So how did you resolve it finally? Should the error go away if I install PSDK?

To make sure the SDK tools are used in preference to the MS VC tools, prepare your command shell by running the SDK "SetEnv.cmd" command file instead of "vcvarsxx.bat".  This sets the paths to use all the tools, headers and libraries from the SDK.  Note that it takes parameters to control the build environment, look at the start of the file to discover them.
I did not use SetEnv.cmd previously.

But it fails completely, due to this kind of section :
IF "x!ORIGINALPATH!x" == "xx" (
) ELSE (

After this, the PATH contains !ORIGINALPATH!.
So the end of the script fails.
Replacing ! by % into all the script works (e;g. PATH seems correct).

Is this syntax (using !) supposed to work ?
How can I have this file content ?

I think you need a command prompt with the extensions enabled.  If you look at the shortcut for the SDK command prompt you can see the required switches:

C:\Windows\System32\cmd.exe /E:ON /V:ON /T:0E /K "C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin\SetEnv.Cmd"

I've generally copied this and added the parameters for SetEnv.Cmd as required.


Graham Bloice