Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Dependency Walker lists a DLL as missing. However, program works without Error. Why?

Dependency Walker lists a DLL as missing. However, program works without Error. Why?

Scheduled Pinned Locked Moved C / C++ / MFC
questionhelp
8 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    Tony Westminster
    wrote on last edited by
    #1

    Hello, I compiled a program that reads the MAC-Adapter information and therefore requires IPHLPAPI.DLL. Now, on XPPro it's fine. DependencyWalker shows EFSADU.DLL to be present in C:\windows\sytem32. On XPHome, DependencyWalker shows this file as missing. However, the program also runs on XP Home without any problems. Now my question: Should I not care about the DependencyWalker warning on XPHome? But then, why does this warning come up? Could it be that DependencyWalker lists DLLs as missing although in reality they are never called (and therefore my app also works on XPHome)? This is the dependency of the mentioned EFSADU.DLL: IPHLPAP.DLL->MPRAPI.DLL->SETUPAPI.DLL->SHELL32.DLL->EFSADU.DLL Thanks in advance for any help, Tony

    D T 2 Replies Last reply
    0
    • T Tony Westminster

      Hello, I compiled a program that reads the MAC-Adapter information and therefore requires IPHLPAPI.DLL. Now, on XPPro it's fine. DependencyWalker shows EFSADU.DLL to be present in C:\windows\sytem32. On XPHome, DependencyWalker shows this file as missing. However, the program also runs on XP Home without any problems. Now my question: Should I not care about the DependencyWalker warning on XPHome? But then, why does this warning come up? Could it be that DependencyWalker lists DLLs as missing although in reality they are never called (and therefore my app also works on XPHome)? This is the dependency of the mentioned EFSADU.DLL: IPHLPAP.DLL->MPRAPI.DLL->SETUPAPI.DLL->SHELL32.DLL->EFSADU.DLL Thanks in advance for any help, Tony

      D Offline
      D Offline
      David Crow
      wrote on last edited by
      #2

      The Depends utility does not show DLLs that are explicitly linked. It only shows those that are implicitly linked.


      "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

      T 1 Reply Last reply
      0
      • D David Crow

        The Depends utility does not show DLLs that are explicitly linked. It only shows those that are implicitly linked.


        "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

        T Offline
        T Offline
        Tony Westminster
        wrote on last edited by
        #3

        David, thanks a lot for that information. Do you know any way (or tool) that shows only explicitly linked DLLs? Thank you, Tony

        P D 2 Replies Last reply
        0
        • T Tony Westminster

          David, thanks a lot for that information. Do you know any way (or tool) that shows only explicitly linked DLLs? Thank you, Tony

          P Offline
          P Offline
          Prakash Nadar
          wrote on last edited by
          #4

          I dont think its possible to determine explicitly linked dlls, may be if you look into the exe file using some hex viewer software and search for dll you can find all the dlls that are linked explicitly and implicitly.. but then it also has some limitation for example, the utility regsvr32 loads the dll dynamically and the input dll is a parameter, here you can never determine which dll it is loading dynamically.

          1 Reply Last reply
          0
          • T Tony Westminster

            David, thanks a lot for that information. Do you know any way (or tool) that shows only explicitly linked DLLs? Thank you, Tony

            D Offline
            D Offline
            David Crow
            wrote on last edited by
            #5

            Try Process Explorer or ListDlls.


            "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

            T 1 Reply Last reply
            0
            • D David Crow

              Try Process Explorer or ListDlls.


              "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

              T Offline
              T Offline
              Tony Westminster
              wrote on last edited by
              #6

              Thank you very much. I used Process Explorer and it clearly shows that my app uses iphlpapi.dll but does NOT use EFSADU.DLL which was listed by DependencyWalker as not present on XP Home. I must say that I have never heard about implicitly and explicitly linked DLLs but assume it means that some DLLs are never used although they might be imported in header files (those would be the implicit ones). So I think, to know which DLLs I have to include when I want to distribute my app, I have to do the following: 1) Run the app. 2) Use Process Explorer to see which DLLs it really uses. I guess I would have to do this in different usage scenarios. I have no clue how DLLs are loaded into memory, but could it be the case, that some DLLs are loaded only after the App has started (I mean until their functionalities are really needed by the app)? Then this would mean I would have to run ProcessExplorer a few times while I play around with the app to see if additional DLLs are loaded. 3) Think about which DLLs are normally present on user's installations of Windows and add those that are likely not to be present. I still regard this to be a hard thing since one can never know what the user has and has not installed. Someone was so kind and enlighten me a bit about this in another thread. Thanks again for the answers, also to Prakash. Codeproject is a wonderful treasure of knowledge and helpfulness and I hope to give back some day when I have learned enough to do so. Tony

              D 1 Reply Last reply
              0
              • T Tony Westminster

                Thank you very much. I used Process Explorer and it clearly shows that my app uses iphlpapi.dll but does NOT use EFSADU.DLL which was listed by DependencyWalker as not present on XP Home. I must say that I have never heard about implicitly and explicitly linked DLLs but assume it means that some DLLs are never used although they might be imported in header files (those would be the implicit ones). So I think, to know which DLLs I have to include when I want to distribute my app, I have to do the following: 1) Run the app. 2) Use Process Explorer to see which DLLs it really uses. I guess I would have to do this in different usage scenarios. I have no clue how DLLs are loaded into memory, but could it be the case, that some DLLs are loaded only after the App has started (I mean until their functionalities are really needed by the app)? Then this would mean I would have to run ProcessExplorer a few times while I play around with the app to see if additional DLLs are loaded. 3) Think about which DLLs are normally present on user's installations of Windows and add those that are likely not to be present. I still regard this to be a hard thing since one can never know what the user has and has not installed. Someone was so kind and enlighten me a bit about this in another thread. Thanks again for the answers, also to Prakash. Codeproject is a wonderful treasure of knowledge and helpfulness and I hope to give back some day when I have learned enough to do so. Tony

                D Offline
                D Offline
                David Crow
                wrote on last edited by
                #7

                Tony Westminster wrote: could it be the case, that some DLLs are loaded only after the App has started Yes, this is what LoadLibrary() and GetProcAddress() are for.


                "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

                1 Reply Last reply
                0
                • T Tony Westminster

                  Hello, I compiled a program that reads the MAC-Adapter information and therefore requires IPHLPAPI.DLL. Now, on XPPro it's fine. DependencyWalker shows EFSADU.DLL to be present in C:\windows\sytem32. On XPHome, DependencyWalker shows this file as missing. However, the program also runs on XP Home without any problems. Now my question: Should I not care about the DependencyWalker warning on XPHome? But then, why does this warning come up? Could it be that DependencyWalker lists DLLs as missing although in reality they are never called (and therefore my app also works on XPHome)? This is the dependency of the mentioned EFSADU.DLL: IPHLPAP.DLL->MPRAPI.DLL->SETUPAPI.DLL->SHELL32.DLL->EFSADU.DLL Thanks in advance for any help, Tony

                  T Offline
                  T Offline
                  Tim Smith
                  wrote on last edited by
                  #8

                  This is a warning about a DLL an operating system DLL uses. That operating system DLL is smart enough to not load the DLL if it isn't present. It uses the delay loaded DLL system to do this. Tim Smith I'm going to patent thought. I have yet to see any prior art.

                  1 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • World
                  • Users
                  • Groups