zoukankan      html  css  js  c++  java
  • MFC程序下,关于静态lib库的调用上的连接问题

    • 问题起源:

     Linking...
    libc.lib(crt0dat.obj) : error LNK2005: _exit already defined in msvcrtd.lib(MSVCRTD.dll)
    libc.lib(crt0dat.obj) : error LNK2005: __exit already defined in msvcrtd.lib(MSVCRTD.dll)
    libc.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in msvcrtd.lib(cinitexe.obj)
    libc.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in msvcrtd.lib(cinitexe.obj)
    libc.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in msvcrtd.lib(cinitexe.obj)
    libc.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in msvcrtd.lib(cinitexe.obj)
    LINK : warning LNK4098: defaultlib "msvcrtd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
    msvcrtd.lib(cinitexe.obj) : warning LNK4098: defaultlib "libc.lib" conflicts with use of other libs; use /NODEFAULTLIB:library.

    • 问题分析:

    提示库冲突,那么vc6下,工程->设置->连接,分类里边的输入,然后在忽略库里边写上libc.lib,以此来屏蔽该库。

    接下来提示:

     

    Linking...
    libcp.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol __pctype
    libcp.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol _errno
    libcp.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol ___mb_cur_max
    libcp.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol ___lc_codepage
    libcp.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol ___lc_handle

    • 再次分析

    可见上面的方法还不能解决问题。

    细细想来,程序结构是mfc程序+静态lib库,mfc调用了lib库的导出函数。

    问题产生原因是因为,在mfc程序默认是使用mfc作为共享dll,而lib库则是静态编译的。所以应该程序改为使用mfc作为静态链接库。

     

    • 问题解决

    vc6下,工程->设置->常规,将默认的使用mfc作为共享dll改为,使用mfc作为静态链接库。

    忽略库:libc.lib

  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/rainduck/p/1865874.html
Copyright © 2011-2022 走看看