VC6 使用 VC2005(2008) 编译器

//转载说明出处,chinabinlang:

VC6 + VC2005:

用VC6好多年了,习惯了VC6的界面,快捷方式,向导,配置,还有VC6的启动速度......

所以,想用VC6的编译器,头文件,库等等这些东西制作程序;我用 VC6 + VC2005 配置成功了,语法,头文件都ok了;

网上有很多文章,我这里详细讲解一下我的配置步骤,方便大家参考:

一:安装VC6 + VS2005;

二:配置VC6: 1:头文件包含路径; 2:源文件包含路径; 3:lib库文件包含路径; 4:执行文件包含路径; 可按照下图配置:

 

 

VC6 使用 VC2005(2008) 编译器_第1张图片

VC6 使用 VC2005(2008) 编译器_第2张图片VC6 使用 VC2005(2008) 编译器_第3张图片

 

3:按照上述方法配置完成后,就可以编译程序,默认为非UNICODE,如果需要UNICODE编码,可以安装网上VC6配置UNICODE配置;

 

4:替换VC6工程中的 StdAfx.h 和 StdAfx.cpp 两个文件 为 VS2008 中的StdAfx.h 和 StdAfx.cpp 两个文件(当然是先用VC2008生成一个工程,然后copy到VC6工程中);

 

5:修改 InitInstance() 函数中的源码:

     删除:

 AfxEnableControlContainer();

 // Standard initialization
 // If you are not using these features and wish to reduce the size
 //  of your final executable, you should remove from the following
 //  the specific initialization routines you do not need.

#ifdef _AFXDLL
  Enable3dControls();   // Call this when using MFC in a shared DLL
#else
 Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif

  添加:

 // InitCommonControlsEx() is required on Windows XP if an application
 // manifest specifies use of ComCtl32.dll version 6 or later to enable
 // visual styles.  Otherwise, any window creation will fail.
 INITCOMMONCONTROLSEX InitCtrls;
 InitCtrls.dwSize = sizeof(InitCtrls);
 // Set this to include all the common control classes you want to use
 // in your application.
 InitCtrls.dwICC = ICC_WIN95_CLASSES;
 InitCommonControlsEx(&InitCtrls);

 CWinApp::InitInstance();

 AfxEnableControlContainer();

 // Standard initialization
 // If you are not using these features and wish to reduce the size
 // of your final executable, you should remove from the following
 // the specific initialization routines you do not need
 // Change the registry key under which our settings are stored
 // TODO: You should modify this string to be something appropriate
 // such as the name of your company or organization
 SetRegistryKey(_T("Local AppWizard-Generated Applications"));


 

 

 

//*******************************************************************************************************************************************************

//经验证:这一步骤可以省略, VC6会自动生成相应的 VC6NAME.exe.manifest ;不过发放是,需要 VC6NAME.exe.manifest  + VC6NAME.exe 一起发放;

*************************************************************************************************************************************************/

 

7:当然为了简化以上配置,可以配置一个标准工程后,用VC6把这个工程制作成向导,这样,每次只需要用向导建立就可以了;

 

8:这时,用VC2005打开转换工程,编译连接时后个错误:.exe.manifest : general error c1010070: Failed to load and parse the manifest. {_~0v,

      解决方案:右键Master.mainfest选择属性 -> 从生成中排除 勾选 是 重新编译就OK了;

     

      VC6不可调试程序,当然,可以通过VC2005调试;

      最终,一些确切的配置可以在VC2005中完成,当然最后发放的时候,可以用VC2005方法release程序;

 

 

 

 

 

VC6 + VC2008:

一:安装VC6  + VC2008:(和上面 VC6+VC2005 一样,有点不同,参考下方注释),直接上图:

 

划线部分是VC6原有路径:

 

VC6 使用 VC2005(2008) 编译器_第4张图片

 

 

 

VC6 使用 VC2005(2008) 编译器_第5张图片

 

 

注释:

1:VC6 + VC2008 配置完成后,(对话框程序),要从VC2008生成的工程下(对话框程序)复制 StdAfx.h , StdAfx.cpp , targetver.h ,比配置VC2005多一个文件;

2:修改完 VC6中的InitInstance() 函数;

3:将 APP 类的继承 改为 CWinAppEx;

将以经VC6配置为UNICODE工程,这样方便与VC2008切换; 可以做一个标准的VC6的UNICODE工程,每次直接复制一个出来就可以了,应为用VC6做的UNICODE向导有问题;

 

更简便的方法是:用VC6和VC2008都生成一个“同名的工程”,然后用VC2008当前(就是.h+.cpp的目录)工程下的所有文件(是所有文件!)覆盖到VC6的工程目录下;

                              如果是 单文档或多文档程序,覆盖后,VC6要把新添加到VC6工程的 .h+.cpp 文件add到工程中。

注:如果VC2008是UNICODE,相应的VC6也必须配置为NUNICODE,如果VC2008非NUNICODE,VC6就不需配置;

 

声明:上述配置方法是个人的建议方法,仅供参考,由此产生的计算机问题,本人不承担任何责任!

 

 

 

 

 

 

 

//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

《VC6 使用 VC2008编译器、头文件》--这篇文章转载自网络;

注:仅作转载,未经测试:

vs2008 有点庞大,因此在VC6下集成VC2008的编译器、库文件是一个很不错的方案。在VC6中要使用VC2008的编译器,需要改变的地方如下:

1、删除或注释掉 C:\Program Files\Microsoft Visual Studio\vc98文件夹
2、在VC6的Options-Directory中改变各个分类的路径:
include :
C:\Program Files\Microsoft Platform SDK\Include
C:\PROGRAM FILES\MICROSOFT SDKS\WINDOWS\V6.0A\INCLUDE
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 9.0\VC\INCLUDE
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 9.0\VC\ATLMFC\INCLUDE

src:
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 9.0\VC\CRT\SRC
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 9.0\VC\ATLMFC\SRC\ATL
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 9.0\VC\ATLMFC\SRC\MFC
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 9.0\VC\ATLMFC\SRC\MFCM

lib:
C:\Program Files\Microsoft Platform SDK\Lib
C:\PROGRAM FILES\MICROSOFT SDKS\WINDOWS\V6.0A\LIB
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 9.0\VC\LIB
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 9.0\VC\ATLMFC\LIB

exe:(重点)
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 9.0\VC\BIN
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 9.0\COMMON7\TOOLS
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 9.0\COMMON7\IDE
C:\Program Files\Microsoft Platform SDK\Bin
C:\Program Files\Microsoft Platform SDK\Bin\WinNT
c:\windows\system32


对每一个EXE或DLL,创建一个类型为24,ID为2的资源,内容是:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>

这样,就可以在VC6的IDE里面使用最新的编译器、链接器、头文件及库文件:)

唯一的一个遗憾就是没办法在IDE环境中调试,但对于我目前的项目来说,没有IDE调试也没什么影响。

注:如果VC6没发调试,可以用VC2008调试,在VC6下开发就可以了;

你可能感兴趣的:(windows,Microsoft,assembly,features,编译器,initialization)