zoukankan      html  css  js  c++  java
  • VS.NET 运行库冲突的解决方法

    运行库冲突的原因:

       当链接第三方库时,可能会出现链接库冲突的问题。造成这种错误的原因可能是因为第三方库使用的运行库 和 使用该第三方库的应用程序使用的运行库不一致造成的。   (VS 工程-->属性—>C/C++ -->代码生成-->运行库 可以设置运行库编译 标记)

    运行库编译标记:

    动态链接库版本:
    /MD Multithreaded DLL 使用导入库MSVCRT.LIB
    /MDd Debug Multithreaded DLL 使用导入库MSVCRTD.LIB
    静态链接库版本:
    /ML Single-Threaded 使用静态库LIBC.LIB
    /MLd Debug Single-Threaded 使用静态库LIBCD.LIB
    /MT Multithreaded 使用静态库LIBCMT.LIB
    /MTd Debug Multithreaded 使用静态库LIBCMTD.LIB

    解决方案:

    (1)找出与当前运行库相冲突的第三方库使用的运行库名称。

    比如我们当前应用程序使用的运行库编译标记为:  /MDD     

    第三库编译使用的编译标记为:  /MTD 

    这时如果在应用程序中使用第三库的lib文件,就会报错误为

    某符号标记在MSVCRTD.LIB中已定义,该错误所在文件为:LIBCMTD.LIB

    (2)根据错误所在文件:LIBCMTD.LIB,我们就可以反过来知道第三方库的运行库编译标记为 /MTD

    (3)这时候VS 工程-->属性—>C/C++ -->代码生成-->运行库,修改编译标记为/MTD

    (4)VS 工程-->属性—>链接器-->附加选项:添加: /NODEFAULTLIB:MSVCRTD

    OK,重新生成,问题解决。没有运行库冲突的问题了。其实出现这个问题是因为编译时的参数不一致导致的。只要把两方面的编译时参数修改一致就可以解决了。

  • 相关阅读:
    洛谷 P1578 奶牛浴场 题解
    LOJ167 康托展开 题解
    三校联训 【NOIP模拟】寻找
    洛谷 P1809 过河问题 题解
    有关多边形面积的总结
    LOJ 103 字串查找 题解
    洛谷 P2384 最短路 题解
    POJ 2492 A Bug's Life 题解
    LOJ 10214 计算器 题解
    洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题解
  • 原文地址:https://www.cnblogs.com/fromchaos/p/1613313.html
Copyright © 2011-2022 走看看