gpt4 book ai didi

visual-c++ - VC++/DEFAULTLIB 问题

转载 作者:行者123 更新时间:2023-12-04 20:23:55 27 4
gpt4 key购买 nike

在发布版本中链接我的 dll 时,我得到 -

1>LINK : warning LNK4098: defaultlib 'mfc80d.lib' conflicts with use of other libs; use /NODEFAULTLIB:library

1>LINK : warning LNK4098: defaultlib 'mfcs80d.lib' conflicts with use of other libs; use /NODEFAULTLIB:library

1>LINK : warning LNK4098: defaultlib 'msvcrtd.lib' conflicts with use of other libs; use /NODEFAULTLIB:library



添加/VERBOSE,我看到以下内容(片段):
...

1> Searching D:\Microsoft Visual Studio 8\VC\atlmfc\lib\mfc80d.lib:

1> Found "public: virtual __thiscall AFX_MODULE_STATE::~AFX_MODULE_STATE(void)" (??1AFX_MODULE_STATE@@UAE@XZ) 1>
Referenced in mfcs80.lib(dllmodul.obj) 1> Loaded mfc80d.lib(MFC80D.DLL)

1> Found "long stdcall AfxWndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?AfxWndProc@@YGJPAUHWND__@@IIJ@Z)

1> Referenced in mfcs80.lib(dllmodul.obj) 1> Loaded mfc80d.lib(MFC80D.DLL)

...



如果我解释正确,这意味着链接器以某种方式将来自(优化的)库 mfcs80 的调用解析为对(非优化的)库 mfc80D 的调用。怎么会这样??

当我添加/NODEFAULTLIB:mfc80d.lib 时,警告消失了,但我还没有安静下来。顺便说一句,该模块确实在增量链接上遇到了零星的莫名其妙的崩溃,只能通过重新构建来解决。我正在使用VS2005。

[编辑:] 更改标题以包含 DEFAULTLIB,希望能更好地聚焦主题。我确实看到一条明确的线说

processed /DEFAULTLIB:mfc80d.lib



在/VERBOSE 输出中,以及许多其他(非调试)默认库中。它从何而来?我怎样才能解决这个问题?

谢谢!

最佳答案

您应该检查项目的运行时库设置,听起来好像不匹配。在 C/C++ > 代码生成 > 运行时库下的项目设置中,您可以选择:

  • 多线程
  • 多线程调试
  • 多线程 DLL
  • 多线程调试 DLL

  • 听起来您的解决方案中的某些项目可能正在使用调试版本,而其他项目则使用非调试版本。或者,一些项目可能正在使用 Debug 版本,而其他项目正在使用 Debug DLL 版本。对于给定的解决方案配置,您希望所有项目都使用相同的设置。

    关于visual-c++ - VC++/DEFAULTLIB 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3203310/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com