【问题标题】:Error LNK2005 DllMain already defined in uafxcw.lib(dllmodul.obj)错误 LNK2005 DllMain 已在 uafxcw.lib(dllmodul.obj) 中定义
【发布时间】:2021-05-28 09:44:54
【问题描述】:

我有 dll 项目。我在我的解决方案中添加了我想在我的 dll 中用作库的其他相当大的项目。但是当我开始使用我的 dll 项目中的新项目时,我遇到了几个链接错误,也像这个问题error LNK2005: new and delete already defined in LIBCMTD.lib(new.obj)

我已经输入了“附加依赖”和“忽略特定库”uafxcwd.lib;Libcmtd.lib,关于new、delete等的错误现在已经消失了,但我仍然得到关于DllMain的错误。

我也试过了

extern "C" { int __afxForceUSRDLL; }

使用 DllMain 连接到 cpp 并得到额外的错误

Error   LNK2005 __afxForceUSRDLL already defined in dllmain.obj 

我完全不知所措

【问题讨论】:

    标签: c++ visual-studio c++11 visual-c++ linker-errors


    【解决方案1】:

    根据文档:Linker Tools Error LNK2005

    如果两个对象定义了相同的符号,你就会得到这个链接器错误。我建议您可以尝试找出您真正需要的两个库中的哪一个,然后告诉链接器不要使用另一个。

    我建议您检查链接器顺序。首先需要链接 MFC 库,然后才能链接 CRT 库。

    更多详情我建议你可以参考链接:error LNK2005: _DllMain@12 already defined in MSVCRT.lib

    【讨论】:

    • 但是我已经添加了额外的依赖 uafxcwd.lib;当我尝试添加 extern "C" { int __afxForceUSRDLL; } 到我的 cpp 与 dllMain
    • @Bruice 我建议你试试代码:#ifdef _X86_ extern "C" { int _afxForceUSRDLL; } #else extern "C" { int __afxForceUSRDLL; } #endif
    • 我也试过了,得到了额外的“错误 LNK2005 __afxForceUSRDLL 已经在 dllmain.obj 中定义”错误
    • @Bruice _USRDLL和_​​AFXDLL冲突,建议你试试/MD编译选项:Build Settings for an MFC DLL
    • @Bruice 我建议您向我们提供minimal reproducible example以重现该问题。
    猜你喜欢
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2014-12-21
    • 2015-08-10
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多