调试: 编译错误, mfcs42.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRT.lib(dllmai
2010-12-22 18:28
579 查看
起因:
程序是一个ocx工程,已经用在项目中了,很正常. 工程收尾的时候, 准备加入vss, 作为一个阶段性版本. 工程本身没动, 把调试程序时的外部依赖dll, exe这些二进制的东西删掉,减少体积, vss check in.
把原有工程删掉, 选了个新位置, vss check out.
再编译的时候,编译不过. 我明明没动源码工程, 怎么会这样呢? 以前遇到此类问题,就是不断的去实验调整Link选项.lib的顺序.有点茫然的感觉. 今天在MS官方站点上看到了一个方法, 解决问题的思路很清晰.
解决过程:
Link选项中加入/verbose:lib, 观察库链接顺序和Link出错位置.
库链接顺序和Link错误位置都看到了如下:
根据出错信息,调整Link库的设置如下:
编译通过, 心情很好,完全没有以前那种,摸着石头过河的感觉~
同一个工程集合中又一个子工程Link报错, 用这种方法解决问题的速度真快
我很纳闷,原始的工程,我源码和设置都没动过,怎么能出现以前编译过,现在不调整设置就编译不过呢?
<2011_1020>
找到了vs2005中设置/verbose:lib的地方
程序是一个ocx工程,已经用在项目中了,很正常. 工程收尾的时候, 准备加入vss, 作为一个阶段性版本. 工程本身没动, 把调试程序时的外部依赖dll, exe这些二进制的东西删掉,减少体积, vss check in.
把原有工程删掉, 选了个新位置, vss check out.
再编译的时候,编译不过. 我明明没动源码工程, 怎么会这样呢? 以前遇到此类问题,就是不断的去实验调整Link选项.lib的顺序.有点茫然的感觉. 今天在MS官方站点上看到了一个方法, 解决问题的思路很清晰.
解决过程:
Link选项中加入/verbose:lib, 观察库链接顺序和Link出错位置.
库链接顺序和Link错误位置都看到了如下:
Searching Libraries Searching C:/Program Files/Microsoft Visual Studio/VC98/LIB/uuid.lib: Searching C:/Program Files/Microsoft Visual Studio/VC98/LIB/MSVCRT.lib: Searching C:/Program Files/Microsoft Visual Studio/VC98/LIB/OLDNAMES.lib: Searching C:/Program Files/Microsoft Visual Studio/VC98/MFC/LIB/mfc42.lib: Searching C:/Program Files/Microsoft Visual Studio/VC98/MFC/LIB/mfcs42.lib:mfcs42.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRT.lib(dllmain.obj) Searching C:/Program Files/Microsoft Visual Studio/VC98/LIB/kernel32.lib:
根据出错信息,调整Link库的设置如下:
编译通过, 心情很好,完全没有以前那种,摸着石头过河的感觉~
同一个工程集合中又一个子工程Link报错, 用这种方法解决问题的速度真快
我很纳闷,原始的工程,我源码和设置都没动过,怎么能出现以前编译过,现在不调整设置就编译不过呢?
<2011_1020>
找到了vs2005中设置/verbose:lib的地方
相关文章推荐
- mfcs42.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRT
- nafxcw.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in解决办法
- uafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in main.obj
- mfcs100d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)
- libcmtd.lib(crt0dat.obj) : error LNK2005: _exit already defined in msvcrtd.lib(MSVCRTD.dll) 编译错误解决方法
- mfcs100d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)
- mfcs80ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)
- mfcs100d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)
- libcmtd.lib(crt0dat.obj) : error LNK2005: _exit already defined in msvcrtd.lib(MSVCRTD.dll) 编译错误解决方法
- VC编译错误: Nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12已经在dllmain.obj 中定义
- 碰到这样的错误error LNK2005: _DllMain@12 already defined in LIBCMTD.lib(dllmain.obj)
- VC++编译错误: Nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12已经在dllmain.obj 中定义
- uafxcw.lib(dllmodul.obj) : error LNK2005: DllMain already defined in
- VC编译错误: Nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12已经在dllmain.obj 中定义
- vc库连接错误 error LNK2005: __alloc_osfhnd already defined in LIBC.lib(osfinfo.obj)
- VC6错误:libcmtd.lib(ccccc.obj) :error lnk2005:xxxx already defined in libcd.lib(ccccc.obj)
- 编译DLL时"error LNK2005: _DllMain@12 already defined"错误
- : error LNK2005: _DllMain@12 already defined in dllmain.obj
- mfcs90d.lib(xxx.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(xxx.obj)
- 编译DLL时"error LNK2005: _DllMain@12 already defined"错误