## BUG: Visual Workbench Makefile Does Not Produce Map File

Q113424

    1.00 1.50
    MS-DOS
    kbtool kbbuglist

    ----------------------------------------------------------------------
    The information in this article applies to:

     - Microsoft Visual Workbench for Windows, versions 1.0 and 1.5
    ----------------------------------------------------------------------

    SYMPTOMS
    ========

    A makefile generated by Visual Workbench fails to produce a map file when
    executed from the command line or as an external makefile. The map file is
    not generated even though the Create Map File option is set in the Linker
    Options and a map file is created when the project is built as a Visual
    Workbench internal makefile.

    CAUSE
    =====

    The makefile created by the Visual Workbench contains the following line:

       MAPFILE = nul

    Even though the makefile uses the /MAP option on the link line, the nul
    MAPFILE field causes the map file not to be created.

    The problem can be demonstrated by viewing the link step for the Microsoft
    Foundation Classes (MFC) Hello sample. Notice that the /MAP option is
    passed to the linker but the List File default filename, HELLO.MAP, is
    overridden with nul.

    link /NOLOGO /NOD /PACKC:61440 /STACK:10240 /ALIGN:16 /ONERROR:
    NOEXE /MAP @HELLO.CRF

    Object Modules [.obj]: /NOLOGO /NOD /PACKC:61440 /STACK:10240
                           /ALIGN:16 /ONERROR:NOEXE /MAP STDAFX.OBJ +
    Object Modules [.obj]: HELLO.OBJ +
    Object Modules [.obj]:
    Run File [STDAFX.exe]: HELLO.EXE
    List File [c:HELLO.map]: nul
    Libraries [.lib]: C:\MSVC\LIB\+
    Libraries [.lib]: C:\MSVC\MFC\LIB\+
    Libraries [.lib]: mafxcw oldnames libw mlibcew commdlg.lib shell.lib
    Definitions File [nul.def]: HELLO.DEF;

    RESOLUTION
    ==========

    The problem can be corrected by changing the MAPFILE line in the makefile
    to:

       MAPFILE =

    This will force the linker to create a .MAP file with the same name as the
    project. You can also specify another name for the map file:

       MAPFILE = MYFILE.MAP

    The makefile can be opened and manually changed as long as the project is
    not open in the Visual Workbench. The line remains changed until the
    project or project options are modified, at which time the nul is
    introduced back into the makefile. At that point, you must make the
    correction again before running the makefile from the command line or as an
    external makefile if a map file is desired. Permanently converting the
    makefile to an external makefile prevents the makefile from being set back
    to nul, but requires that the makefile be maintained manually.

    Another option is to set the MAPFILE environment variable and use the /E
    switch (which specifies using the environment variable instead of the macro
    definition) when building the project, as in the following:

       SET MAPFILE = HELLO.MAP
       NMAKE /E /fHELLO.MAK

    If you use the following format then you can set the MAPFILE environment
    variable just once for all projects (that is, it could be set in your
    AUTOEXEC.BAT file):

       SET MAPFILE=$*.MAP

    STATUS
    ======

    Microsoft has confirmed this to be a bug in the Microsoft products
    listed at the beginning of this article. We are researching this
    problem and will post new information here in the Microsoft Knowledge
    Base as it becomes available.

    This is not a problem in Visual C++ 32-bit Edition.

    Additional reference words: 1.00 1.50 file name make
    KBCategory: kbtool kbbuglist
    KBSubcategory: VWBIss

Keywords : kb16bitonly
Issue type :
Technology :

Last Reviewed: December 22, 1999 © 2001 Microsoft Corporation. All rights reserved. Terms of Use.