VC6 静态编译的Release程序,编译通过运行报错

Linking...
nafxcw.lib(wincore.obj) : error LNK2005: _InitMultipleMonitorStubs already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _xGetSystemMetrics@4 already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _xMonitorFromPoint@12 already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _xMonitorFromRect@8 already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _xMonitorFromWindow@8 already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _xGetMonitorInfo@8 already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _xEnumDisplayMonitors@16 already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _g_fMultiMonInitDone already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _g_pfnEnumDisplayMonitors already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _g_pfnGetMonitorInfo already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _g_pfnMonitorFromPoint already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _g_pfnMonitorFromRect already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _g_pfnMonitorFromWindow already defined in PPTooltip.obj
nafxcw.lib(wincore.obj) : error LNK2005: _g_pfnGetSystemMetrics already defined in PPTooltip.obj
C:\Program Files (x86)\HTDriver\20407\HT_USBKeyTool_R.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

*************.exe - 15 error(s), 3 warning(s)

然后 我给Release配置: Link的命令行中增加这个命令 /FORCE:MULTIPLE。编译可以通过,但是有如下警告:

Linking...
nafxcw.lib(wincore.obj) : warning LNK4006: _InitMultipleMonitorStubs already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _xGetSystemMetrics@4 already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _xMonitorFromPoint@12 already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _xMonitorFromRect@8 already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _xMonitorFromWindow@8 already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _xGetMonitorInfo@8 already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _xEnumDisplayMonitors@16 already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _g_fMultiMonInitDone already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _g_pfnEnumDisplayMonitors already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _g_pfnGetMonitorInfo already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _g_pfnMonitorFromPoint already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _g_pfnMonitorFromRect already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _g_pfnMonitorFromWindow already defined in PPTooltip.obj; second definition ignored
nafxcw.lib(wincore.obj) : warning LNK4006: _g_pfnGetSystemMetrics already defined in PPTooltip.obj; second definition ignored
C:\Program Files (x86)\HTDriver\20407\HT_USBKeyTool_R.exe : warning LNK4088: image being generated due to /FORCE option; image may not run

***************.exe - 0 error(s), 18 warning(s)

然后运行这个exe,程序报错退出……

哪位大神知道这个问题怎么解决呢,谢谢!

4个回答

nafxcw.lib(wincore.obj) : error LNK2005: _g_pfnMonitorFromWindow already defined in PPTooltip.obj

这个上面不是说了:在生成nafxcw.lib 的时候 ,链接出错了。 wincore文件里 的一些函数 链接的时候检查到 PPTooltip 文件里已经定义了。 你看下这两个文件 。 是不是都定义了 g_pfnMonitorFromWindow。 一类的。 检查下这两个文件

cai_huan_123
欢香Love 谢谢你的提醒, 我包含了这个头文件:#include "multimon.h", 这个头文件里定义了上述那些警告的函数,谢谢
接近 2 年之前 回复

先看项目配置,试着把release的优化选项全部关闭,然后逐步打开。

这样看代码很难看出什么原因的。

cai_huan_123
欢香Love 谢谢
接近 2 年之前 回复

CRT 库对 new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 DllMain 函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。
当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时,可能会出现以下 LNK2005 错误。
解决方法:
强制链接器按照正确的顺序链接库!

cai_huan_123
欢香Love 谢谢
接近 2 年之前 回复

看下代码和一些细节有没有错误的地方
当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时,可能会出现以下 LNK2005 错误。

cai_huan_123
欢香Love 谢谢
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐