Visual C++

Microsoft's classic win9X-era version of Visual C++.

Still in use for some shipping retail apps twelve years later!

Application Details:

Version: 6.0
License: Retail
Votes: 1
Latest Rating: Gold
Latest Wine Version Tested: 1.7.38

Maintainers: About Maintainership

No maintainers. Volunteer today!

Test Results

Old test results
The test results for this version are very old, and as such they may not represent the current state of Wine. Please consider submitting a new test report.
Selected Test Results

What works

Installation, running, compiling and executing simple windows console application.

What does not

Didn't find something, yet.


What was not tested

Other types of projects.

Hardware tested


  • GPU:
  • Driver:

Additional Comments

Only tweaks i made was 32 bit installation and selecting windows 98 from winecfg.

selected in Test Results table below
Operating systemTest dateWine versionInstalls?Runs?Used
CurrentUbuntu 15.04 "Vivid" amd64 (+ variants like Kubuntu)May 12 20151.7.38Yes Yes Goldan anonymous user 
ShowUbuntu 10.04 "Lucid" i386 (+ variants like Kubuntu)May 16 20111.2.2Yes Yes Bronzean anonymous user 
ShowFedora 8Nov 02 20081.1.5Yes Yes Platinuman anonymous user 
ShowGentoo Linux x86_64Aug 09 20081.1.2Yes Yes SilverJazz 
ShowUHU-Linux 1.1 "Kamion"Jul 15 20060.9.12.N/A Yes Goldan anonymous user 

Known Bugs

Bug # Description Status Resolution Other apps affected
710 Microsoft Visual C++ 6 can't open file CLOSED FIXED View
1868 ftol function from msvcrt emulation incorporates GNU-C specific artefact CLOSED ABANDONED View
1917 DialogBox CLOSED FIXED View
3368 wrc: menuitems with escape sequences CLOSED ABANDONED View
4689 Problem with Internet Exceptions ! CLOSED ABANDONED View
5322 Both MSVC6 and MSVB6 installers die very early CLOSED FIXED View
7886 link.exe process fail with non native MSVCRT CLOSED ABANDONED View
8335 Visual C++ 6 doesn't build apps properly using builtin msvcrt CLOSED FIXED View
9153 midl generates wrong output, keeps Visual C++ 6 from working properly NEW View
11073 crash in cmd.exe with lib.exe (VC++6.0) CLOSED FIXED View
15037 MSVC 6: Debug-compiled executable not calling MSVC debugger on "Retry" CLOSED ABANDONED View
15038 MSVC 6: Cannot work on resources in MSDEV studio CLOSED ABANDONED View
15039 MSVC 6: Menu popdowns too narrow for arrows REOPENED View
16069 VC6 debugging not working when Windows version is 98 CLOSED ABANDONED View
18097 Missing extrac32.exe tool causes some prerequisite installers to fail (msjavx86.exe) CLOSED FIXED View
18098 urlmon.AsyncInstallDistributionUnit not implemented (needed MS Java VM) CLOSED FIXED View
21906 setupapi copyfiles action target must default to LDID_WIN (win9x) or LDID_SYS (NT) when neither DestinationDirs nor DefaultDestDir is given CLOSED FIXED View

Show open bugs

HowTo / Notes

Native alternatives

Native alternatives for non-windows platforms:
- Anjuta


Make sure you operate on a clean WINEPREFIX (~/.wine)!

Prerequisite installation by using 'winetricks' script

­Winetricks will take care of needed installation prerequisites and work around s­ome installer problems.

$ wget­

­$ sh winetricks -q vcrun6 mfc40

Install steps to work around some bugs

After winetricks step start "winecfg" tool and select "Windows 98" from Windows Version Listbox. Press "Apply" button. Press "Ok" button.

Now you may run the installer. The installer might crash when trying to install the required 'virtual machine for java' (bug 18097). Ignore this and upon "reboot" when asked to install DCOM98, uncheck the box and let the installer proceed.

After the installation is finished, change the Windows version back to default (Windows XP).

Installing with Wine Windows versions set to NT4/2K/XP

­Because bug 5322 will proba­bly stand a long time, I present another method.

1.) Save the following snippet to a text file, for example "vc6-installer-fix":

set $x=0x410000
set $end=0x420000
while(*++$x != 0x07B0B18B && $x < $end)
if $x != $end
set *(int*) $x = 0x5BC0335E
set *(int*)($x+4) = 0x900004C2
handle SIGSEGV pass nostop noprint
handle SIGTRAP nopass nostop noprint

2.) run the following command, assuming you saved the snippet to "vc6-installer-fix":

$ winedbg --gdb setup.exe < vc6-installer-fix

NOTE: If the installer spawns a sub-installer that crashes due to this bug, you must first run the main installer and then attach to sub-installer with debugger.

This can be done in automated way (assuming the main installer has already started sub-installer):

­$ winedbg --gdb $(( 16#$(winedbg --command "info proc" | grep your-sub-installer-process-name | cut -f 2 -d " ") )) < vc6-installer-fix­

It tells winedbg to query process ids, filters out the target process, converts the PID to decimal and then starts winedbg in gdb proxy mode, attaching to target process and executing patch script.

This should work for all VC6 installers and even Embedded Visual C++ 4.x ones.

What does it do?

Basically it starts the installer under control of a debugger and the works around bug 5322 by in-memory patching execution flow.

NOTE: This method is not recommended for the average user!


Comments Disabled

Comments for this application have been disabled because there are no maintainers.