高手请问一下,我用VC编写了软件,打包好再别的机上不能用,我里面用了MFC还是了串口控件,是不是需要在打包的时候添加dll和MSCOMM32.OCX。
  我现在有3个问题
   1、如果我用MFC的静态链接库,是不是release里面会自动生成使用的DLL;如果用MFC的动态链接库,我需要将使用的DLL手动加到release里面。
   2、生成可执行文件的时候,除了用了MFC中的DLL,是不是还要用到WINDOW系统的好多DLL,打包的时候,这些需要手动添加在release里面么?因为打包好的软件要在别的机子上运行。
   3、下面是我用VC工具检测出来的程序用到的DLL文件,再网上有人说,这些文件不需要全部添加,否则机子会瘫痪,我不太懂,那位高手能指点一下么?谢谢了。
  advapi32.dll,gdi32.dll,kernel32.dll,mfc42.dll,msvcrt.dll,ntdll.dll,ole32.dll,oleaut32.dll,rpcrt4.dll,secur32.dll,shell32.dll,shlwapi.dll,user32.dll。

解决方案 »

  1.   

    1.MFC的静态链接库在生成可执行程序时会把所需要的dll文件一起打包进你的可执行程序,而用MFC的动态链接库则需在打包时把对方机子没有的dll一起打包过去.
    2.你自己进行测试,把生成的*.exe 然后复制 advapi32.dll,gdi32.dll,kernel32.dll,mfc42.dll,msvcrt.dll,ntdll.dll,ole32.dll,oleaut32.dll,rpcrt4.dll,secur32.dll,shell32.dll,shlwapi.dll,user32.dll 等文件到一部没有装VC工具的电脑,执行一下看看能否成功.如果显示出问题就表明那机了没有注册你所用的*.OCX文件,你要手工注册一下.
      

  2.   

    一般的 你用  静态链接mfc  不需要添加任何的 dll你就发布。exe了
      

  3.   

    advapi32.dll,gdi32.dll,kernel32.dll,mfc42.dll,msvcrt.dll,ntdll.dll,ole32.dll,oleaut32.dll,rpcrt4.dll,secur32.dll,shell32.dll,shlwapi.dll,user32.dll 都是c:\windows\system32里面的,他们难道不用添加么,再别人的机上上不能显示,是不是要添加串口控件MSCOMM32.OCX,直接拷贝到release里面一起打包行么?
      

  4.   

    这其中的dll都是系统自带的,别人机器上也该有,你想添加还不一定能成功,不能覆盖原有的,覆盖了系统就有问题了。可能和MFC有关的需要打包吧,串口控件应该添加吧,然后注册。