用vs2008编写的对话框程序,在静态库中使用mfc,生成.exe后在有的电脑上不能运行。查看后发现不能运行的电脑上没有安装framework组件,有没有什么办法请大侠指导~vs2008MFC

解决方案 »

  1.   

    安装 vc9.0 的redist包, 是专用的发布支持库。
      

  2.   

    你说的是属性-c/c++ - 运行库,选择/MT
    这样选择后会产生错误
    cl: 命令行 error D8016 :“/MT”和“/clr”命令行选项不兼容
    请指教~
    这样真能解决在没有安装任何framework组件的电脑上运行软件的问题?
      

  3.   

    工程属性中去掉CLR,Common Language Runtime
      

  4.   

    公共语言运行时支持:无公共语言运行时支持
    然后又有新错误
    1>C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxver_.h(81) : fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds
    好像感觉有些矛盾
      

  5.   

    公共语言运行时支持:无公共语言运行时支持
    然后又有新错误
    1>C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxver_.h(81) : fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds
    好像感觉有些矛盾
    嗯,跟/MD有冲突,这中情况你就要带上用到的vc的DLL文件了
      

  6.   

    公共语言运行时支持:无公共语言运行时支持
    然后又有新错误
    1>C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxver_.h(81) : fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds
    好像感觉有些矛盾
    嗯,跟/MD有冲突,这中情况你就要带上用到的vc的DLL文件了
    请指教,我真心不明白怎么在没有安装framework组件的电脑上使软件运行带上DLL文件就行了?
      

  7.   

    公共语言运行时支持:无公共语言运行时支持
    然后又有新错误
    1>C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxver_.h(81) : fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds
    好像感觉有些矛盾
    嗯,跟/MD有冲突,这中情况你就要带上用到的vc的DLL文件了
    请指教,我真心不明白怎么在没有安装framework组件的电脑上使软件运行带上DLL文件就行了?
    如果是你MFC或者VC的程序,那么带上VC安装目录下的redist目录中的相关几个DLL以及manifest就可以了
      

  8.   

    我用的是MFC,然后release文件夹下产生的.manifest文件中有这些内容
    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <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' />
          </requestedPrivileges>
        </security>
      </trustInfo>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
        </dependentAssembly>
      </dependency>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type='win32' name='Microsoft.VC90.MFC' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
        </dependentAssembly>
      </dependency>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*' />
        </dependentAssembly>
      </dependency>
    </assembly>
    于是
    我把redist目录中的Microsoft.vc90.CRT.manifest和Microsoft.vc90.MFC.manifest,Msvcr90.DLL和MFC90.DLL四个文件拷到了放.exe的文件夹里,还是不能运行。