vc写的程序用setupfactory打包以后(用release下的文件打包,又添加了mfc42.dll,MSVCRTD.DLL)安装在别的没有装过vc的机器上,发现只能查询数据库(在别的机器上),不能添加,修改,但是装在装过vc的机器上就可以,各位大侠这是怎么回事啊,好着急啊,谢谢各位了

解决方案 »

  1.   

    运行的时候添加修改数据就出如下对话框 
    标题:Microsoft Visual C++ Runtime Library
    正文:
    Runtime Error!
    “应用程序名“
    abnormal program termination.我又添加了msvcp60d.dll 进去也不行我试了静态连接,然后把release里面的东西用setupfactory打包,也不行,还是一样我用depends查了程序,发现除了mfc42.dll,MSVCRTD.DLL以外就是一些带32的dll,有人说不用添我就没添
      

  2.   

    是不是 project-》setting-》general-》use mfc in a static library
    我试过了,这样得到的release我用来打包(没有加任何的dll),不行
      

  3.   

    发现如果静态连接时,build-》setactive configurations 选的是debug就会在build的时候出错,LIBCMTD.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in msvcrtd.lib(MSVCRTD.dll)
    LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit already defined in msvcrtd.lib(MSVCRTD.dll)
    LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit already defined in msvcrtd.lib(MSVCRTD.dll)
    LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in msvcrtd.lib(cinitexe.obj)
    LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in msvcrtd.lib(cinitexe.obj)
    LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in msvcrtd.lib(cinitexe.obj)
    LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in msvcrtd.lib(cinitexe.obj)
    LIBCMTD.lib(atox.obj) : error LNK2005: _atoi already defined in msvcrtd.lib(MSVCRTD.dll)
    msvcrtd.lib(MSVCRTD.dll) : error LNK2005: __setmbcp already defined in LIBCMTD.lib(mbctype.obj)
    LINK : warning LNK4098: defaultlib "msvcrtd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
    LINK : warning LNK4098: defaultlib "LIBCMTD" conflicts with use of other libs; use /NODEFAULTLIB:library
    LIBCMTD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/za.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
    Creating browse info file...如果选release就没错,怎么回事呢?
      

  4.   

    那就用 release 的 static link
      

  5.   

    你的机子上已经安装了Access2000或以上版本是吗?如果是,请不要用本机的msado15.dll,去找一个低版本的,如只有安装98的机子上拷个ado到你的机子上的d盘下,然后在Stdafx.h文件中用添加:
    #pragma warning (disable: 4146)
    #import "d:\ado\msadox.dll"
    #import "d:\ado\msado15.dll" no_namespace rename ("EOF","adoEOF")
    #pragma warning (default: 4146)
    再编译,试试看
      

  6.   

    大侠,这个是什么意思呢?Access2000会影响msado15.dll的版本吗?“只有安装98的机子”是什么意思呢?只装了系统别的什么都没装还是装了Access2000行不行?
    我打包的机器上装了Access2000,但是我要安装的机器上也装了啊(只装了office2000和系统win2000server)
      

  7.   

    碰到过,以前没解决
    也是找dll解决的
      

  8.   

    billy145533 ,难得碰到也遇见这样问题的人,你可以说得具体一点吗, 像luxintian所说那样吗?
    我一时找不到只装98的机器,还试不了
      

  9.   

    如果安装过Access2000,会升级msado15.dll的
    如果你在高版本的msado15.dll下编译,到低版本的msado15.dll机子下运行可能出问题
      

  10.   

    只安装win98,没装过其他数据库工具等软件的msado15.dll,可能算是版本比较低的msado15.dll