删除MSVCR120D.dll

时间:2016-11-17 16:27:48

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

我有一个使用VS2013构建的dll(C / C ++),它由exe使用,让我称之为exe_1来调用另一个exe,exe_2。

使用相同的代码(和def文件)在VS 6上构建了一个dll多年前和它完美地运行,以便exe_1使用 - > old_dll - >调用exe_2

现在问题是新的dll存在一些问题,因此它没有调用上面提到的exe_2。我有dll和amp;的源代码。 exe_2但不是exe_1。因此我使用了一些DebugBreak语句来检查exe_1是否被exe_1调用,但结果是否定的。

以下是我可以在我的新dll(VS 2013)&旧的dll(VS 6)

  1. " dumpbin / exports"对于新的&旧的dll在Summary部分中有一些变化,如下所示(exports部分具有相同的函数名称):
  2. 新dll摘要

        6000 .data
        1000 .idata
        C000 .rdata
        4000 .reloc
        1000 .rsrc
       5F000 .text
       2F000 .textbss
    

    旧Dll摘要

        C000 .data
        6000 .rdata
        3000 .reloc
        1000 .rsrc
       2F000 .text
    
    1. 如果我们看到旧dll 的配置文件输出(使用Dependency Walker Profiling),则以下警告是额外的
    2. 警告:找不到至少一个延迟加载依赖项模块。 警告:由于延迟加载相关模块中缺少导出功能,至少有一个模块具有未解析的导入。

      1. 使用Dependency walker我发现我的新dll 还有一个附加依赖项MSVCR120D.dll。
      2. 由于我觉得第3点是罪魁祸首,我尝试了很多选项,通过在C / C ++下指定/ Mtd(也试过/ Mt)选项来删除该依赖关系 - >代码生成 - >运行时库。

        但我得到的是_CrtDumpMemoryLeaks,_CrtMemCheckpoint,__ free_dbg e.t.c&的一些未解决的链接器错误。因此我无法使用此选项生成新的dll。

        请提供您的意见。

0 个答案:

没有答案