0xc000007b错误:如何使用Process Monitor进行分析

时间:2016-10-04 13:50:33

标签: c++ qt dll visual-studio-2015

启动我的基本应用程序时出现的另一个错误,它只通过调用其init方法来测试我的DLL(我的项目的核心可交付成果)。我已经分析了使用Process Monitor发生了什么,并根据进程名称进行了过滤,只查找与我的基本应用程序的主要可执行文件相关的事件。

我应该在那找什么?我想在结果栏中任何表示SUCCESS的内容都没有指出问题 - 但其余的呢?它似乎是在世界各地寻找我的DLL,虽然它首先在当前目录中尝试并在那里找到它...

此处的摘录,以Procmon格式保存为CSV格式:http://pastebin.com/YHSeQUk0

正如我所说,它试图在很多地方打开我的DLL(遵循我的PATH环境变量?)。当在正确的文件夹中找到它时(与exe所在的位置相同并且正在运行),它会经历一系列操作,这些操作大多以SUCCESS结束(如果没有另外指定):

  1. IRP_MJ_CREATE
  2. IRP_MJ_CLEANUP
  3. IRP_MJ_CLOSE
  4. IRP_MJ_CREATE
  5. FASTIO_ACQUIRE_FOR_SECTION_SYNCHRONIZATION(结果是:FILE LOCKED 只有读者)
  6. FASTIO_ACQUIRE_FOR_CC_FLUSH
  7. FASTIO_ACQUIRE_FOR_SECTION_SYNCHRONIZATION(结果是成功)
  8. FASTIO_ACQUIRE_FOR_CC_FLUSH
  9. 它第二次完成所有这一切。对我来说这看起来不错。没有其他与DLL相关的事件出现。

    顶部还有另一个事件: HKLM \ System \ CurrentControlSet \ Control \ Srp \ GP \ DLL中的RegOpenKey首先导致REPARSE,然后在NAME NOT FOUND中。但事后发生了很多事情,这看起来并不像一个阻碍点 - 无论如何也不知道这是什么。

    dumpbin / dependents ConsoleApplication1.exe产生以下内容:

    文件类型:EXECUTABLE IMAGE

    Image具有以下依赖项:

    uss_map_interface.dll
    VCRUNTIME140.dll
    api-ms-win-crt-runtime-l1-1-0.dll
    api-ms-win-crt-math-l1-1-0.dll
    api-ms-win-crt-stdio-l1-1-0.dll
    api-ms-win-crt-locale-l1-1-0.dll
    api-ms-win-crt-heap-l1-1-0.dll
    KERNEL32.dll
    

    第一个是我的dll。如果我删除它,启动时的消息将变为"您的计算机中缺少uss_map_interface.dll" - 所以我无法相信这个woukld与我的DLL有关...我在Windows / System32或SysWOW64中找到的所有其他内容。

    我正在使用带有x64配置的MVS Express 2015(v140)编译我的DLL和测试基本应用程序。如果我更改为x86配置,也会出现此问题。有趣的是,如果我在Qt项目中使用MinGW编译我的DLL - 它工作正常。如果可以提供提示,请遵循Qz / MinGW编译版本的依赖关系:

    文件类型:DLL

    Image具有以下依赖项:

    libgcc_s_dw2-1.dll
    KERNEL32.dll
    msvcrt.dll
    libstdc++-6.dll
    

    无论如何,提前谢谢!

0 个答案:

没有答案