我的mfc程序,用installshield12打包时,添加exe时,竟然找不到依赖项,打包后给人安装,不能使用。
因为是动态连接,我把所有可执行文件和所有需要用到的系统dll全部都烤到一台没安装vc6的机子上时,程序还是不能使用,
我的程序是release,动态连接。

解决方案 »

  1.   

    why not using mfc in a static library
      

  2.   

    有缺dll的提示吗
    用depends看看需要哪些dll
      

  3.   

    使用Dependency Walker看看你的执行文件到底依赖哪些DLL
      

  4.   

    谢谢各位。
    我因为用dao连接access2000,
    在InitInstance函数中添加下面代码   
      AfxGetModuleState()->m_dwVersion   =   0x0601
    此时如果用静态连接,就会出错,只能用动态的。我使用了Dependency   查看了,依赖项有9项,我一股脑儿全复制进文件夹了,还是没有用,程序还是打不开……
    爆汗,但在其他装过vc6的机子上,都可以打开使用,没有问题。
      

  5.   

    没有缺dll的提示
    就是窗口都跳不出来。
      

  6.   

    在那台机上装一下最新的Microsoft 数据访问组件(MDAC),试试。如果可以,一起打包安装。
      

  7.   

    所需的DLL都拷全了么?另外,是否拷到了Win32目录下?
      

  8.   

    全都拷进去了,没有用啊
    都拷在了程序文件夹
    没有拷往system32里没有需要注册的组件,我用了一下串口,mscomm控件,应该不用注册什么的吧
    dao是很久前就过时的东西,只支持到access97
    我想是不是问题出在了AfxGetModuleState()-> m_dwVersion       =       0x0601
    这句程序上,这是我在网上找的直接拷贝的。
      

  9.   

    不是所有DLL都能直接拷贝的,有些Side By Side类型的DLL最好使用安装的方式,VC里面提供了重发布的可安装包,在VC文件夹下找找redist之类的文件夹,里面应该有安装包,使用安装包安装支持DLL能正确地设置版本映射,仅仅复制这些DLL还是会被系统提示找不到
      

  10.   

    谢谢各位,我现在把数据库改为access97,然后去掉了
    AfxGetModuleState()->m_dwVersion = 0x0601 ;
    改为静态链接,重新编译。结果还是老样子,我的机子,和其他装过vc6的机子都能运行,
    没有装过vc6的机子不能运行。而且也不跳出某dll找不到等警告框。泪崩中……
      

  11.   

    楼上不是告诉你么?需要安装access相关得驱动合MDAC之类得
    这些东西不是拷贝文件即可得,即使你真得把所有dll拷贝过去都没有用,因为许多东西需要写入注册表得,你不可能知道它需要写入啥
      

  12.   

    “mscomm控件”这个控件默认是没有的,请将该控件copy到目标机器,然后注册,注意是必须要注册的,然后就ok了
      

  13.   

    DLL 也需要注册啊,regsvr32
      

  14.   

    你把dll都拷贝过去了?不能用?
    出来什么提示没有?你试着把dll放到system32下面看看。
      

  15.   

    建议楼主把Release文件夹下的一起打包试试
      

  16.   

    1.静态连接
    2.注册active控件