高分求救!

kuku411 2004-11-12 09:11:22
我原来用debug版,但是生成的EXE文件做安装程序的时候,在装了VC的机器上好用,但是在没有装VC的机器上总有异常的错误。有什么办法解决?
!insertmacro UpgradeDLL ${SYSDLLDIR}\mfc42.dll $SYSDIR\mfc42.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\mfc42d.dll $SYSDIR\mfc42d.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\mfcd42d.dll $SYSDIR\mfcd42d.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\mfcn42d.dll $SYSDIR\mfcn42d.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\mfco42d.dll $SYSDIR\mfco42d.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\msv42d.dll $SYSDIR\msv42d.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\msvcrt.dll $SYSDIR\msvcrt.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\mshtmled.dll $SYSDIR\mshtmled.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\msvcrtd.dll $SYSDIR\msvcrtd.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\msvcp60.dll $SYSDIR\msvcp60.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\msvcp60d.dll $SYSDIR\msvcp60d.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\msvcirt.dll $SYSDIR\msvcirt.dll
!insertmacro UpgradeDLL ${SYSDLLDIR}\msvcirtd.dll $SYSDIR\msvcirtd.dll
我在安装包中把这些.dll都包括进去了。还是不行。于是我就想用静态的。可是我改成 USE MFC in Static Liabrary。编译就有下面的错误。是不是还要改什么东西啊?帮帮忙!100分是我能给的最多的分了,很急。

libcd.lib(crt0dat.obj) : error LNK2005: __cinit already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: _exit already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __exit already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __cexit already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __c_exit already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __C_Exit_Done already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __C_Termination_Done already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __exitflag already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __wpgmptr already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __pgmptr already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: ___winitenv already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __wenviron already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: ___initenv already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __environ already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: ___wargv already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: ___argv already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: ___argc already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __winminor already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __winmajor already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __winver already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __osver already defined in libcmtd.lib(crt0dat.obj)
libcd.lib(crt0dat.obj) : error LNK2005: __umaskval already defined in libcmtd.lib(crt0dat.obj)
libcmtd.lib(crt0init.obj) : warning LNK4098: defaultlib "libcd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
Debug/EPAConfigurator2.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
...全文
94 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuku411 2004-11-13
  • 打赏
  • 举报
回复
MFC42D.DLL
MFCO42D.DLL
MSVCRTD.DLL
这几个我都包括了
kuku411 2004-11-13
  • 打赏
  • 举报
回复
我刚才做了测试,把所有的VC的LIB的文件全部和我的EXE打包在一起,还是出现这个问题

但是肯定是装了VC后给系统配置了什么信息,使的我的程序好用的,各位大虾,帮帮忙

我做的是一个用UDP通讯的上位机功能块组态软件的程序
kuku411 2004-11-13
  • 打赏
  • 举报
回复
我的安装程序提示:

abnormal pragram terminal

然后点击确定就自动退出了
38062708 2004-11-13
  • 打赏
  • 举报
回复
我看不是缺少动态库的问题,要是缺少动态库的话系统会提示在提供的路径下找不到动态库,现在你的问题是运行时的动态库与你编译时使用的动态库不同,或者动态库的版本有问题,你给VC打个包升级一下再试
kuku411 2004-11-13
  • 打赏
  • 举报
回复
在线急等
fengqinggao 2004-11-13
  • 打赏
  • 举报
回复
不知道你做的什么东西,所以没有办法知道你都用了什么库,我做的几个程序都只用到了
MFC42D.DLL
MFCO42D.DLL
MSVCRTD.DLL
这三个库,而且只要将其放到安装目录下就没有问题。

在VC中有一个自带的程序,在安装后的开始菜单中有,叫做Dependency的工具,在其中打开你的EXE文件,它就将你所用的DLL列出,但是有些是属于VC的(需要移植的),有些是属于系统的(不需要移植)

有一个奇怪的问题是,当我的程序在没有安装VC的机器上运行的时候,它会一个一个提醒该程序缺什么DLL,然后拷贝过去就OK了,很简单的,不知道你那里是什么提示
kuku411 2004-11-13
  • 打赏
  • 举报
回复
为什么我在安装有VC的机器上好用,在没有安装VC的机器就不好用了,大家帮帮忙啊?肯定还时需要什么库文件
kuku411 2004-11-13
  • 打赏
  • 举报
回复
在DEBUG版下打包需要包含那些库文件啊我上面列的全不全?
kuku411 2004-11-12
  • 打赏
  • 举报
回复
我的放到系统目录下了,system32中了,好我试试把这些在我的当前的目录下也放一份
fengqinggao 2004-11-12
  • 打赏
  • 举报
回复
你的程序安装完后那些DLL都放到哪个目录下了?我的放在和可执行文件相同的目录下,一直没有问题啊,而且也没有改动过VC的设置

你用的动态库比较多,用静态库的话,可执行文件可能比较大,执行性能不一定好,所以建议别改成静态库
kuku411 2004-11-12
  • 打赏
  • 举报
回复
现在我没有时间去查我的release版有什么问题而导致我的程序不好用,我现在就想要么通过增加DEBUG时需要的.dll,要么就是改成静态连接,大家帮帮忙,很急啊。
kuku411 2004-11-12
  • 打赏
  • 举报
回复
当然我用release试了,用这个编译没有问题的,但是一运行就有问题。
yycec 2004-11-12
  • 打赏
  • 举报
回复
为什么不使用Release版呢?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧