zoukankan      html  css  js  c++  java
  • Lnk2005 问题

    首先感谢http://www.cnitblog.com/vcleaner/archive/2005/05/25/203.html这个地址的作者
    另外自己参考了msdn的一些信息,地址:ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vccomp/html/d9587adc-68be-425c-8a30-15dbc86717a4.htm
    为了方便自己查询,转载部分:


    造成LNK2005错误主要有以下几种情况:

    1. 重复定义全局变量。
    2. 头文件的包含重复。
    3. 使用第三方的库造成的。
    这种情况主要是C运行期函数库和MFC的库冲突造成的。
    具体的办法就是将那个提示出错的库放到另外一个库的前面。
    另外选择不同的C函数库,可能会引起这个错误。
    微软和C有两种C运行期函数库,一种是普通的函数库:LIBC.LIB,不支持多线程。
    另外一种是支持多线程的:msvcrt.lib。
    如果一个工程里,这两种函数库混合使用,可能会引起这个错误,
    一般情况下它需要MFC的库先于C运行期函数库被链接,
    因此建议使用支持多线程的msvcrt.lib。
    所以在使用第三方的库之前首先要知道它链接的是什么库,
    否则就可能造成LNK2005错误。
    如果不得不使用第三方的库,可以尝试按下面所说的方法修改,
    但不能保证一定能解决问题,前两种方法是微软提供的:


    A、选择VC菜单Project->Settings->Link->Catagory选择Input,
    再在Ignore libraries 的Edit栏中填入你需要忽略的库,
    如:Nafxcwd.lib;Libcmtd.lib。
    然后在Object/library Modules的Edit栏中填入正确的库的顺序,
    这里需要你能确定什么是正确的顺序,呵呵,God bless you!


    B、选择VC菜单Project->Settings->Link页,
    然后在Project Options的Edit栏中输入/verbose:lib,
    这样就可以在编译链接程序过程中在输出窗口看到链接的顺序了。


    C、选择VC菜单Project->Settings->C/C++页,
    Catagory选择Code Generation后
    再在User Runtime libraray中选择MultiThread DLL等其他库,逐一尝试。


    本人所遇到的问题是第3类

    调试的时候,先采用B方法的/verbose:lib,然后A方法

    本人在未看到上述方法,采用都是微软msdn提供的:若要修复,请将 /FORCE:MULTIPLE 添加到链接器命令行选项,并确保 uuid.lib 是引用的第一个库。

    缺点就是:会出现Lnk4006的警告

    备注:
    在Lnk4098中有一份忽略列表可以参考
    ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vccomp/html/1f1b1408-1316-4e34-80f5-6a02f2db0ac1.htm

  • 相关阅读:
    Core Animation简介
    objective-c 常用函数、变量
    NSString判断纯数字
    自定义对话框AlterView
    IOS 6 自动布局 入门-1(IOS中autolayout和之前版本autoresize的差异)
    真机调试问题 错误集合
    block使用小结、在arc中使用block、如何防止循环引用
    View和viewController的生命周期
    IOS侧滑和webview
    Linker Error、MRC与ARC、导航条背景
  • 原文地址:https://www.cnblogs.com/GoGoagg/p/1526073.html
Copyright © 2011-2022 走看看