您的位置:首页 > 编程语言 > C语言/C++

解决 Visual C++2013 中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误

2017-03-15 10:22 429 查看
本文来自MSDN https://support.microsoft.com/zh-cn/help/148652/a-lnk2005-error-occurs-when-the-crt-library-and-mfc-libraries-are-linked-in-the-wrong-order-in-visual-c
在使用VC2013编译工程时,由于使用了第三方库,且该库的cpp文件被调整为Not Using Precompiled Headers.也就是不使用stdafx.h的预编译选项.

导致出现连接冲突.

1>------ Build started: Project: XXXXXX, Configuration: Debug Win32 ------

1>mfcs120d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)

1>.\Debug\XXXXXX.dll : fatal error LNK1169: one or more multiply defined symbols found

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

以下是第三方库中cpp(cc)文件的编译选项



根据以上MSDN文档的描述

CRT 库对 new、delete 和DllMain 函数使用弱外部链接。MFC 库也包含new、delete 和DllMain
函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。


所以需要调整mfcs120d.lib和MSVCRTD.lib这两个lib的连接顺序:以解决此问题:



经过以上配置后,问题解决.程序可以顺利编译运行.

感谢http://blog.csdn.net/soloist/article/details/493238提供的第二中解决方法:

直接调整VC工程文件xxxx.vcxproj.将不使用预编译文件的第三方开调整到所有的cpp文件的最后面.这样也可以保证链接顺序正确

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mfc vc VC链接错误
相关文章推荐