我用vc2005写的一个程序在vista系统下编译,在xp系统上运行,出现了错误提示
说是 side by side 错误.
用的链接库是:Multi-threaded DLL (/MD)
改用Multi-threaded (/MT)就没有问题.请问如何在使用Multi-threaded DLL (/MD)链接库的情况下,使程序可以在XP下正常运行?我以实验过一下方法:
1.拷贝Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT文件夹下的文件到程序目录下
2.单独编译Menifest文件.
3.不 embed Menifest文件.
这些方法都不行.

解决方案 »

  1.   

    除了VC8的CRT的dll,还有MFC的dll也要带上,把相关dll,manifest放到你exe同一个目录
      

  2.   

    把所需要的dll都已经拷贝到文件夹下了.程序在2000系统下运行正常.
      

  3.   

    xp下做法是一样的,再检查一下你的manifest等是否指定的dll版本正确...
      

  4.   

    side by side,好像是那个什么“并行配置”,如果是的话,最省事且无后患的方法就是安装微软的重分发包。
      

  5.   

    在 \\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:msvcm80d.dll
    msvcp80d.dll
    msvcr80d.dll
    Microsoft.VC80.DebugCRT.manifest把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以运行那个程序了。
      

  6.   

    编译选项中链接库不要选择动态或静态,直接改成标准windows试一试。
      

  7.   

    用depends看看依赖的资源有哪些,然后统统打包一起就好
      

  8.   

    我也碰到过类似的问题,工程属性中的USE of MFC改为:
    Use Standard Windows Libraries。这样编译的程序可能会大一些。
      

  9.   

    可是现在实际的需求是不允许改变动态连接的方式.
    只允许用Multi-threaded DLL (/MD)连接方式.
    有好的解决方法吗?
      

  10.   

    在网上查,有人提供了一种方法:
    将Program Files\Microsoft Visual Studio 8\VC\redist下相应平台的Microsoft.VC80.MFC.manifest和Microsoft.VC80.CRT.manifest拷贝到应用程序目录即可。如果用到了atl库,则还要Microsoft.VC80.ATL.manifest。
    我按照这个方法作了,可是程序依然不能运行.