zoukankan      html  css  js  c++  java
  • vs2010静态链接MFC库报链接错误

      由于需要将MFC程序在其它电脑上运行,所以需要将动态链接的MFC改成静态链接,本以为很简单,没想到链接的时候出现下面的链接错误:

    uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMT.lib(new.obj)
    uafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMT.lib(delete.obj)
    

      在网上找了下原因,说是CRT库对new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 DllMain 函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时,可能会出现上面的错误。

      网上的解决方法试了很多都会报错,后来根据上面报错的信息,上面报错是先链接了LIBCMT.lib,再链接uafxcw.lib。可不可以先链接uafxcw.lib,再链接LIBCMT.lib呢?抱着这个想法试了下,果然成功了~~~

  • 相关阅读:
    Python—设计模式
    Python—操作系统和多线程
    thin mission 2021 11 3
    搜索
    c++ 调试
    Lecture--words families
    高数--积分
    thin mission 2021.11.2
    tiny mission 2021.11.1
    zlib使用心得
  • 原文地址:https://www.cnblogs.com/chengxuyuancc/p/4030385.html
Copyright © 2011-2022 走看看